1use chrono::NaiveDate;
4use rust_decimal::Decimal;
5use serde::{Deserialize, Serialize};
6
7use super::common::{AssetCategory, BuySell, OpenClose, OrderType, PutCall};
8use crate::parsers::xml_utils::{deserialize_optional_date, deserialize_optional_decimal};
9
10#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
44#[serde(rename = "FlexQueryResponse")]
45pub struct FlexQueryResponse {
46 #[serde(rename = "@queryName", default)]
48 pub query_name: Option<String>,
49
50 #[serde(rename = "@type", default)]
52 pub query_type: Option<String>,
53
54 #[serde(rename = "FlexStatements")]
56 pub statements: FlexStatementsWrapper,
57}
58
59#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
61pub struct FlexStatementsWrapper {
62 #[serde(rename = "@count", default)]
64 pub count: Option<String>,
65
66 #[serde(rename = "FlexStatement")]
68 pub statements: Vec<ActivityFlexStatement>,
69}
70
71#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
117#[serde(rename = "FlexStatement")]
118pub struct ActivityFlexStatement {
119 #[serde(rename = "@accountId")]
121 pub account_id: String,
122
123 #[serde(
125 rename = "@fromDate",
126 deserialize_with = "crate::parsers::xml_utils::deserialize_flex_date"
127 )]
128 pub from_date: NaiveDate,
129
130 #[serde(
132 rename = "@toDate",
133 deserialize_with = "crate::parsers::xml_utils::deserialize_flex_date"
134 )]
135 pub to_date: NaiveDate,
136
137 #[serde(rename = "@whenGenerated")]
139 pub when_generated: String, #[serde(rename = "Trades", default)]
143 pub trades: TradesWrapper,
144
145 #[serde(rename = "OpenPositions", default)]
147 pub positions: PositionsWrapper,
148
149 #[serde(rename = "CashTransactions", default)]
151 pub cash_transactions: CashTransactionsWrapper,
152
153 #[serde(rename = "CorporateActions", default)]
155 pub corporate_actions: CorporateActionsWrapper,
156
157 #[serde(rename = "SecuritiesInfo", default)]
159 pub securities_info: SecuritiesInfoWrapper,
160
161 #[serde(rename = "ConversionRates", default)]
163 pub conversion_rates: ConversionRatesWrapper,
164
165 #[serde(rename = "AccountInformation", default)]
168 pub account_information: Option<super::extended::AccountInformation>,
169
170 #[serde(rename = "ChangeInNAV", default)]
172 pub change_in_nav: Option<super::extended::ChangeInNAV>,
173
174 #[serde(rename = "EquitySummaryInBase", default)]
176 pub equity_summary: EquitySummaryWrapper,
177
178 #[serde(rename = "CashReport", default)]
180 pub cash_report: CashReportWrapper,
181
182 #[serde(rename = "TradeConfirms", default)]
184 pub trade_confirms: TradeConfirmsWrapper,
185
186 #[serde(rename = "OptionEAE", default)]
188 pub option_eae: OptionEAEWrapper,
189
190 #[serde(rename = "FxTransactions", default)]
192 pub fx_transactions: FxTransactionsWrapper,
193
194 #[serde(rename = "ChangeInDividendAccruals", default)]
196 pub change_in_dividend_accruals: ChangeInDividendAccrualsWrapper,
197
198 #[serde(rename = "OpenDividendAccruals", default)]
200 pub open_dividend_accruals: OpenDividendAccrualsWrapper,
201
202 #[serde(rename = "InterestAccruals", default)]
204 pub interest_accruals: InterestAccrualsWrapper,
205
206 #[serde(rename = "Transfers", default)]
208 pub transfers: TransfersWrapper,
209
210 #[serde(rename = "MTMPerformanceSummaryInBase", default)]
213 pub mtm_performance_summary: MTMPerformanceSummaryWrapper,
214
215 #[serde(rename = "FIFOPerformanceSummaryInBase", default)]
217 pub fifo_performance_summary: FIFOPerformanceSummaryWrapper,
218
219 #[serde(rename = "MTDYTDPerformanceSummary", default)]
221 pub mtd_ytd_performance_summary: MTDYTDPerformanceSummaryWrapper,
222
223 #[serde(rename = "StmtFunds", default)]
225 pub statement_of_funds: StatementOfFundsWrapper,
226
227 #[serde(rename = "ChangeInPositionValues", default)]
229 pub change_in_position_values: ChangeInPositionValueWrapper,
230
231 #[serde(rename = "UnbundledCommissionDetails", default)]
233 pub unbundled_commission_details: UnbundledCommissionDetailWrapper,
234
235 #[serde(rename = "ClientFees", default)]
237 pub client_fees: ClientFeesWrapper,
238
239 #[serde(rename = "ClientFeesDetails", default)]
241 pub client_fees_detail: ClientFeesDetailWrapper,
242
243 #[serde(rename = "SLBActivities", default)]
245 pub slb_activities: SLBActivitiesWrapper,
246
247 #[serde(rename = "SLBFees", default)]
249 pub slb_fees: SLBFeesWrapper,
250
251 #[serde(rename = "HardToBorrowDetails", default)]
253 pub hard_to_borrow_details: HardToBorrowDetailsWrapper,
254
255 #[serde(rename = "FxLots", default)]
257 pub fx_lots: FxLotsWrapper,
258
259 #[serde(rename = "UnsettledTransfers", default)]
261 pub unsettled_transfers: UnsettledTransfersWrapper,
262
263 #[serde(rename = "TradeTransfers", default)]
265 pub trade_transfers: TradeTransfersWrapper,
266
267 #[serde(rename = "PriorPeriodPositions", default)]
269 pub prior_period_positions: PriorPeriodPositionsWrapper,
270
271 #[serde(rename = "TierInterestDetails", default)]
273 pub tier_interest_details: TierInterestDetailsWrapper,
274
275 #[serde(rename = "DebitCardActivities", default)]
277 pub debit_card_activities: DebitCardActivitiesWrapper,
278
279 #[serde(rename = "SalesTaxes", default)]
281 pub sales_tax: SalesTaxWrapper,
282
283 #[serde(rename = "DepositsOnHold", default, skip_serializing)]
291 deposits_on_hold: IgnoredSection,
292 #[serde(rename = "FxPositions", default, skip_serializing)]
293 fx_positions: IgnoredSection,
294 #[serde(rename = "NetStockPositions", default, skip_serializing)]
295 net_stock_positions: IgnoredSection,
296 #[serde(rename = "ComplexPositions", default, skip_serializing)]
297 complex_positions: IgnoredSection,
298 #[serde(rename = "CFDCharges", default, skip_serializing)]
299 cfd_charges: IgnoredSection,
300 #[serde(rename = "CommissionCredits", default, skip_serializing)]
301 commission_credits: IgnoredSection,
302 #[serde(rename = "FdicInsuredDepositsByBank", default, skip_serializing)]
303 fdic_insured_deposits: IgnoredSection,
304 #[serde(rename = "HKIPOOpenSubscriptions", default, skip_serializing)]
305 hk_ipo_open_subscriptions: IgnoredSection,
306 #[serde(rename = "HKIPOSubscriptionActivity", default, skip_serializing)]
307 hk_ipo_subscription_activity: IgnoredSection,
308 #[serde(rename = "IBGNoteTransactions", default, skip_serializing)]
309 ibg_note_transactions: IgnoredSection,
310 #[serde(rename = "IncentiveCouponAccrualDetails", default, skip_serializing)]
311 incentive_coupon_accruals: IgnoredSection,
312 #[serde(rename = "MutualFundDividendDetails", default, skip_serializing)]
313 mutual_fund_dividends: IgnoredSection,
314 #[serde(rename = "NetStockPositionSummary", default, skip_serializing)]
315 net_stock_position_summary: IgnoredSection,
316 #[serde(rename = "PendingExcercises", default, skip_serializing)]
317 pending_exercises: IgnoredSection,
318 #[serde(rename = "RoutingCommissions", default, skip_serializing)]
319 routing_commissions: IgnoredSection,
320 #[serde(rename = "SLBCollaterals", default, skip_serializing)]
321 slb_collaterals: IgnoredSection,
322 #[serde(rename = "SLBOpenContracts", default, skip_serializing)]
323 slb_open_contracts: IgnoredSection,
324 #[serde(rename = "SoftDollars", default, skip_serializing)]
325 soft_dollars: IgnoredSection,
326 #[serde(rename = "StockGrantActivities", default, skip_serializing)]
327 stock_grant_activities: IgnoredSection,
328 #[serde(rename = "TransactionTaxes", default, skip_serializing)]
329 transaction_taxes: IgnoredSection,
330 #[serde(rename = "UnbookedTrades", default, skip_serializing)]
331 unbooked_trades: IgnoredSection,
332 }
335
336#[derive(Debug, Clone, PartialEq, Default)]
338struct IgnoredSection;
339
340impl<'de> serde::Deserialize<'de> for IgnoredSection {
341 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
342 where
343 D: serde::Deserializer<'de>,
344 {
345 serde::de::IgnoredAny::deserialize(deserializer)?;
347 Ok(IgnoredSection)
348 }
349}
350
351#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
356#[serde(rename_all = "PascalCase")]
357enum TradesItem {
358 Trade(Trade),
359 Order(Trade),
360 SymbolSummary(Trade),
361 AssetSummary(Trade),
362 WashSale(Trade),
363 Lot(Trade),
364}
365
366#[derive(Debug, Clone, PartialEq, Default, Serialize)]
376pub struct TradesWrapper {
377 pub items: Vec<Trade>,
379
380 pub wash_sales: Vec<Trade>,
382}
383
384impl<'de> serde::Deserialize<'de> for TradesWrapper {
385 fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
386 where
387 D: serde::Deserializer<'de>,
388 {
389 #[derive(Deserialize)]
390 struct Raw {
391 #[serde(rename = "$value", default)]
392 items: Vec<TradesItem>,
393 }
394
395 let raw = Raw::deserialize(deserializer)?;
396
397 let mut trades = Vec::new();
398 let mut wash_sales = Vec::new();
399
400 for item in raw.items {
401 match item {
402 TradesItem::Trade(t) => trades.push(t),
403 TradesItem::WashSale(t) => wash_sales.push(t),
404 _ => {}
406 }
407 }
408
409 Ok(TradesWrapper {
410 items: trades,
411 wash_sales,
412 })
413 }
414}
415
416#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
418pub struct PositionsWrapper {
419 #[serde(rename = "OpenPosition", default)]
421 pub items: Vec<Position>,
422}
423
424#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
426pub struct CashTransactionsWrapper {
427 #[serde(rename = "CashTransaction", default)]
429 pub items: Vec<CashTransaction>,
430}
431
432#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
434pub struct CorporateActionsWrapper {
435 #[serde(rename = "CorporateAction", default)]
437 pub items: Vec<CorporateAction>,
438}
439
440#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
487pub struct Trade {
488 #[serde(rename = "@accountId")]
494 pub account_id: String,
495
496 #[serde(rename = "@transactionID", default)]
498 pub transaction_id: Option<String>,
499
500 #[serde(rename = "@conid")]
503 pub conid: String,
504
505 #[serde(rename = "@symbol")]
507 pub symbol: String,
508
509 #[serde(rename = "@description", default)]
511 pub description: Option<String>,
512
513 #[serde(rename = "@assetCategory")]
515 pub asset_category: AssetCategory,
516
517 #[serde(rename = "@cusip", default)]
519 pub cusip: Option<String>,
520
521 #[serde(rename = "@isin", default)]
523 pub isin: Option<String>,
524
525 #[serde(rename = "@figi", default)]
527 pub figi: Option<String>,
528
529 #[serde(rename = "@securityID", default)]
531 pub security_id: Option<String>,
532
533 #[serde(rename = "@securityIDType", default)]
535 pub security_id_type: Option<String>,
536
537 #[serde(
540 rename = "@multiplier",
541 default,
542 deserialize_with = "deserialize_optional_decimal"
543 )]
544 pub multiplier: Option<Decimal>,
545
546 #[serde(
548 rename = "@strike",
549 default,
550 deserialize_with = "deserialize_optional_decimal"
551 )]
552 pub strike: Option<Decimal>,
553
554 #[serde(
556 rename = "@expiry",
557 default,
558 deserialize_with = "deserialize_optional_date"
559 )]
560 pub expiry: Option<NaiveDate>,
561
562 #[serde(rename = "@putCall", default)]
564 pub put_call: Option<PutCall>,
565
566 #[serde(rename = "@underlyingConid", default)]
568 pub underlying_conid: Option<String>,
569
570 #[serde(rename = "@underlyingSymbol", default)]
572 pub underlying_symbol: Option<String>,
573
574 #[serde(
577 rename = "@tradeDate",
578 default,
579 deserialize_with = "deserialize_optional_date"
580 )]
581 pub trade_date: Option<NaiveDate>,
582
583 #[serde(
585 rename = "@settleDateTarget",
586 default,
587 deserialize_with = "deserialize_optional_date"
588 )]
589 pub settle_date: Option<NaiveDate>,
590
591 #[serde(rename = "@buySell", default)]
593 pub buy_sell: Option<BuySell>,
594
595 #[serde(rename = "@openCloseIndicator", default)]
597 pub open_close: Option<OpenClose>,
598
599 #[serde(rename = "@transactionType", default)]
601 pub transaction_type: Option<String>,
602
603 #[serde(
606 rename = "@quantity",
607 default,
608 deserialize_with = "deserialize_optional_decimal"
609 )]
610 pub quantity: Option<Decimal>,
611
612 #[serde(
614 rename = "@price",
615 default,
616 deserialize_with = "deserialize_optional_decimal"
617 )]
618 pub price: Option<Decimal>,
619
620 #[serde(
622 rename = "@proceeds",
623 default,
624 deserialize_with = "deserialize_optional_decimal"
625 )]
626 pub proceeds: Option<Decimal>,
627
628 #[serde(
630 rename = "@cost",
631 default,
632 deserialize_with = "deserialize_optional_decimal"
633 )]
634 pub cost: Option<Decimal>,
635
636 #[serde(
639 rename = "@ibCommission",
640 default,
641 deserialize_with = "deserialize_optional_decimal"
642 )]
643 pub commission: Option<Decimal>,
644
645 #[serde(
647 rename = "@taxes",
648 default,
649 deserialize_with = "deserialize_optional_decimal"
650 )]
651 pub taxes: Option<Decimal>,
652
653 #[serde(
655 rename = "@netCash",
656 default,
657 deserialize_with = "deserialize_optional_decimal"
658 )]
659 pub net_cash: Option<Decimal>,
660
661 #[serde(
664 rename = "@fifoPnlRealized",
665 default,
666 deserialize_with = "deserialize_optional_decimal"
667 )]
668 pub fifo_pnl_realized: Option<Decimal>,
669
670 #[serde(
672 rename = "@mtmPnl",
673 default,
674 deserialize_with = "deserialize_optional_decimal"
675 )]
676 pub mtm_pnl: Option<Decimal>,
677
678 #[serde(
680 rename = "@fxPnl",
681 default,
682 deserialize_with = "deserialize_optional_decimal"
683 )]
684 pub fx_pnl: Option<Decimal>,
685
686 #[serde(rename = "@currency")]
689 pub currency: String,
690
691 #[serde(
693 rename = "@fxRateToBase",
694 default,
695 deserialize_with = "deserialize_optional_decimal"
696 )]
697 pub fx_rate_to_base: Option<Decimal>,
698
699 #[serde(
702 rename = "@origTradeDate",
703 default,
704 deserialize_with = "deserialize_optional_date"
705 )]
706 pub orig_trade_date: Option<NaiveDate>,
707
708 #[serde(
710 rename = "@origTradePrice",
711 default,
712 deserialize_with = "deserialize_optional_decimal"
713 )]
714 pub orig_trade_price: Option<Decimal>,
715
716 #[serde(rename = "@origTradeID", default)]
718 pub orig_trade_id: Option<String>,
719
720 #[serde(rename = "@holdingPeriodDateTime", default)]
722 pub holding_period_date_time: Option<String>,
723
724 #[serde(rename = "@openDateTime", default)]
726 pub open_date_time: Option<String>,
727
728 #[serde(rename = "@whenReopened", default)]
730 pub when_reopened: Option<String>,
731
732 #[serde(rename = "@notes", default)]
734 pub notes: Option<String>,
735
736 #[serde(rename = "@orderID", default)]
742 pub ib_order_id: Option<String>,
743
744 #[serde(rename = "@execID", default)]
746 pub exec_id: Option<String>,
747
748 #[serde(rename = "@tradeID", default)]
750 pub trade_id: Option<String>,
751
752 #[serde(rename = "@origTransactionID", default)]
754 pub orig_transaction_id: Option<String>,
755
756 #[serde(rename = "@origOrderID", default)]
758 pub orig_order_id: Option<String>,
759
760 #[serde(rename = "@dateTime", default)]
763 pub trade_time: Option<String>,
764
765 #[serde(rename = "@whenRealized", default)]
767 pub when_realized: Option<String>,
768
769 #[serde(rename = "@orderTime", default)]
771 pub order_time: Option<String>,
772
773 #[serde(rename = "@orderType", default)]
776 pub order_type: Option<OrderType>,
777
778 #[serde(rename = "@brokerageOrderID", default)]
780 pub brokerage_order_id: Option<String>,
781
782 #[serde(rename = "@orderReference", default)]
784 pub order_reference: Option<String>,
785
786 #[serde(rename = "@exchOrderId", default)]
788 pub exch_order_id: Option<String>,
789
790 #[serde(rename = "@extExecID", default)]
792 pub ext_exec_id: Option<String>,
793
794 #[serde(rename = "@ibExecID", default)]
796 pub ib_exec_id: Option<String>,
797
798 #[serde(rename = "@issuer", default)]
801 pub issuer: Option<String>,
802
803 #[serde(rename = "@issuerCountryCode", default)]
805 pub issuer_country_code: Option<String>,
806
807 #[serde(rename = "@subCategory", default)]
809 pub sub_category: Option<String>,
810
811 #[serde(rename = "@listingExchange", default)]
813 pub listing_exchange: Option<String>,
814
815 #[serde(rename = "@underlyingListingExchange", default)]
818 pub underlying_listing_exchange: Option<String>,
819
820 #[serde(rename = "@underlyingSecurityID", default)]
822 pub underlying_security_id: Option<String>,
823
824 #[serde(rename = "@traderID", default)]
827 pub trader_id: Option<String>,
828
829 #[serde(rename = "@isAPIOrder", default)]
831 pub is_api_order: Option<String>,
832
833 #[serde(rename = "@volatilityOrderLink", default)]
835 pub volatility_order_link: Option<String>,
836
837 #[serde(rename = "@clearingFirmID", default)]
839 pub clearing_firm_id: Option<String>,
840
841 #[serde(rename = "@levelOfDetail", default)]
843 pub level_of_detail: Option<String>,
844
845 #[serde(
848 rename = "@amount",
849 default,
850 deserialize_with = "deserialize_optional_decimal"
851 )]
852 pub amount: Option<Decimal>,
853
854 #[serde(
856 rename = "@tradeMoney",
857 default,
858 deserialize_with = "deserialize_optional_decimal"
859 )]
860 pub trade_money: Option<Decimal>,
861
862 #[serde(
864 rename = "@closePrice",
865 default,
866 deserialize_with = "deserialize_optional_decimal"
867 )]
868 pub close_price: Option<Decimal>,
869
870 #[serde(
872 rename = "@changeInPrice",
873 default,
874 deserialize_with = "deserialize_optional_decimal"
875 )]
876 pub change_in_price: Option<Decimal>,
877
878 #[serde(
880 rename = "@changeInQuantity",
881 default,
882 deserialize_with = "deserialize_optional_decimal"
883 )]
884 pub change_in_quantity: Option<Decimal>,
885
886 #[serde(rename = "@ibCommissionCurrency", default)]
888 pub commission_currency: Option<String>,
889
890 #[serde(rename = "@relatedTradeID", default)]
893 pub related_trade_id: Option<String>,
894
895 #[serde(rename = "@relatedTransactionID", default)]
897 pub related_transaction_id: Option<String>,
898
899 #[serde(
902 rename = "@accruedInt",
903 default,
904 deserialize_with = "deserialize_optional_decimal"
905 )]
906 pub accrued_int: Option<Decimal>,
907
908 #[serde(
910 rename = "@principalAdjustFactor",
911 default,
912 deserialize_with = "deserialize_optional_decimal"
913 )]
914 pub principal_adjust_factor: Option<Decimal>,
915
916 #[serde(rename = "@serialNumber", default)]
919 pub serial_number: Option<String>,
920
921 #[serde(rename = "@deliveryType", default)]
923 pub delivery_type: Option<String>,
924
925 #[serde(rename = "@commodityType", default)]
927 pub commodity_type: Option<String>,
928
929 #[serde(
931 rename = "@fineness",
932 default,
933 deserialize_with = "deserialize_optional_decimal"
934 )]
935 pub fineness: Option<Decimal>,
936
937 #[serde(rename = "@weight", default)]
939 pub weight: Option<String>,
940
941 #[serde(
944 rename = "@reportDate",
945 default,
946 deserialize_with = "deserialize_optional_date"
947 )]
948 pub report_date: Option<NaiveDate>,
949
950 #[serde(rename = "@exchange", default)]
952 pub exchange: Option<String>,
953
954 #[serde(rename = "@model", default)]
956 pub model: Option<String>,
957
958 #[serde(rename = "@acctAlias", default)]
960 pub acct_alias: Option<String>,
961
962 #[serde(rename = "@rtn", default)]
964 pub rtn: Option<String>,
965
966 #[serde(rename = "@positionActionID", default)]
968 pub position_action_id: Option<String>,
969
970 #[serde(
972 rename = "@initialInvestment",
973 default,
974 deserialize_with = "deserialize_optional_decimal"
975 )]
976 pub initial_investment: Option<Decimal>,
977}
978
979#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1018pub struct Position {
1019 #[serde(rename = "@accountId")]
1025 pub account_id: String,
1026
1027 #[serde(rename = "@conid")]
1030 pub conid: String,
1031
1032 #[serde(rename = "@symbol")]
1034 pub symbol: String,
1035
1036 #[serde(rename = "@description", default)]
1038 pub description: Option<String>,
1039
1040 #[serde(rename = "@assetCategory")]
1042 pub asset_category: AssetCategory,
1043
1044 #[serde(rename = "@cusip", default)]
1046 pub cusip: Option<String>,
1047
1048 #[serde(rename = "@isin", default)]
1050 pub isin: Option<String>,
1051
1052 #[serde(rename = "@figi", default)]
1054 pub figi: Option<String>,
1055
1056 #[serde(rename = "@securityID", default)]
1058 pub security_id: Option<String>,
1059
1060 #[serde(rename = "@securityIDType", default)]
1062 pub security_id_type: Option<String>,
1063
1064 #[serde(
1067 rename = "@multiplier",
1068 default,
1069 deserialize_with = "deserialize_optional_decimal"
1070 )]
1071 pub multiplier: Option<Decimal>,
1072
1073 #[serde(
1075 rename = "@strike",
1076 default,
1077 deserialize_with = "deserialize_optional_decimal"
1078 )]
1079 pub strike: Option<Decimal>,
1080
1081 #[serde(
1083 rename = "@expiry",
1084 default,
1085 deserialize_with = "deserialize_optional_date"
1086 )]
1087 pub expiry: Option<NaiveDate>,
1088
1089 #[serde(rename = "@putCall", default)]
1091 pub put_call: Option<PutCall>,
1092
1093 #[serde(rename = "@underlyingConid", default)]
1095 pub underlying_conid: Option<String>,
1096
1097 #[serde(rename = "@underlyingSymbol", default)]
1099 pub underlying_symbol: Option<String>,
1100
1101 #[serde(rename = "@position")]
1104 pub quantity: Decimal,
1105
1106 #[serde(rename = "@markPrice")]
1108 pub mark_price: Decimal,
1109
1110 #[serde(rename = "@positionValue")]
1112 pub position_value: Decimal,
1113
1114 #[serde(rename = "@side", default)]
1116 pub side: Option<String>,
1117
1118 #[serde(
1121 rename = "@openPrice",
1122 default,
1123 deserialize_with = "deserialize_optional_decimal"
1124 )]
1125 pub open_price: Option<Decimal>,
1126
1127 #[serde(
1129 rename = "@costBasisPrice",
1130 default,
1131 deserialize_with = "deserialize_optional_decimal"
1132 )]
1133 pub cost_basis_price: Option<Decimal>,
1134
1135 #[serde(
1137 rename = "@costBasisMoney",
1138 default,
1139 deserialize_with = "deserialize_optional_decimal"
1140 )]
1141 pub cost_basis_money: Option<Decimal>,
1142
1143 #[serde(
1145 rename = "@fifoPnlUnrealized",
1146 default,
1147 deserialize_with = "deserialize_optional_decimal"
1148 )]
1149 pub fifo_pnl_unrealized: Option<Decimal>,
1150
1151 #[serde(
1153 rename = "@percentOfNAV",
1154 default,
1155 deserialize_with = "deserialize_optional_decimal"
1156 )]
1157 pub percent_of_nav: Option<Decimal>,
1158
1159 #[serde(rename = "@currency")]
1162 pub currency: String,
1163
1164 #[serde(
1166 rename = "@fxRateToBase",
1167 default,
1168 deserialize_with = "deserialize_optional_decimal"
1169 )]
1170 pub fx_rate_to_base: Option<Decimal>,
1171
1172 #[serde(
1175 rename = "@reportDate",
1176 deserialize_with = "crate::parsers::xml_utils::deserialize_flex_date"
1177 )]
1178 pub report_date: NaiveDate,
1179
1180 #[serde(rename = "@holdingPeriodDateTime", default)]
1183 pub holding_period_date_time: Option<String>,
1184
1185 #[serde(rename = "@openDateTime", default)]
1187 pub open_date_time: Option<String>,
1188
1189 #[serde(rename = "@originatingTransactionID", default)]
1191 pub originating_transaction_id: Option<String>,
1192
1193 #[serde(rename = "@code", default)]
1195 pub code: Option<String>,
1196
1197 #[serde(rename = "@originatingOrderID", default)]
1203 pub originating_order_id: Option<String>,
1204
1205 #[serde(rename = "@issuer", default)]
1208 pub issuer: Option<String>,
1209
1210 #[serde(rename = "@issuerCountryCode", default)]
1212 pub issuer_country_code: Option<String>,
1213
1214 #[serde(rename = "@subCategory", default)]
1216 pub sub_category: Option<String>,
1217
1218 #[serde(rename = "@listingExchange", default)]
1220 pub listing_exchange: Option<String>,
1221
1222 #[serde(rename = "@underlyingListingExchange", default)]
1225 pub underlying_listing_exchange: Option<String>,
1226
1227 #[serde(rename = "@underlyingSecurityID", default)]
1229 pub underlying_security_id: Option<String>,
1230
1231 #[serde(
1234 rename = "@accruedInt",
1235 default,
1236 deserialize_with = "deserialize_optional_decimal"
1237 )]
1238 pub accrued_int: Option<Decimal>,
1239
1240 #[serde(
1242 rename = "@principalAdjustFactor",
1243 default,
1244 deserialize_with = "deserialize_optional_decimal"
1245 )]
1246 pub principal_adjust_factor: Option<Decimal>,
1247
1248 #[serde(rename = "@serialNumber", default)]
1251 pub serial_number: Option<String>,
1252
1253 #[serde(rename = "@deliveryType", default)]
1255 pub delivery_type: Option<String>,
1256
1257 #[serde(rename = "@commodityType", default)]
1259 pub commodity_type: Option<String>,
1260
1261 #[serde(
1263 rename = "@fineness",
1264 default,
1265 deserialize_with = "deserialize_optional_decimal"
1266 )]
1267 pub fineness: Option<Decimal>,
1268
1269 #[serde(rename = "@weight", default)]
1271 pub weight: Option<String>,
1272
1273 #[serde(rename = "@levelOfDetail", default)]
1276 pub level_of_detail: Option<String>,
1277
1278 #[serde(rename = "@model", default)]
1280 pub model: Option<String>,
1281
1282 #[serde(rename = "@acctAlias", default)]
1284 pub acct_alias: Option<String>,
1285
1286 #[serde(
1288 rename = "@vestingDate",
1289 default,
1290 deserialize_with = "deserialize_optional_date"
1291 )]
1292 pub vesting_date: Option<NaiveDate>,
1293}
1294
1295#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1342pub struct CashTransaction {
1343 #[serde(rename = "@accountId")]
1349 pub account_id: String,
1350
1351 #[serde(rename = "@transactionID", default)]
1353 pub transaction_id: Option<String>,
1354
1355 #[serde(rename = "@type", default)]
1358 pub transaction_type: Option<String>,
1359
1360 #[serde(rename = "@description", default)]
1362 pub description: Option<String>,
1363
1364 #[serde(rename = "@amount")]
1366 pub amount: Decimal,
1367
1368 #[serde(rename = "@currency")]
1370 pub currency: String,
1371
1372 #[serde(
1374 rename = "@fxRateToBase",
1375 default,
1376 deserialize_with = "deserialize_optional_decimal"
1377 )]
1378 pub fx_rate_to_base: Option<Decimal>,
1379
1380 #[serde(
1383 rename = "@date",
1384 default,
1385 deserialize_with = "deserialize_optional_date"
1386 )]
1387 pub date: Option<NaiveDate>,
1388
1389 #[serde(
1391 rename = "@settleDate",
1392 default,
1393 deserialize_with = "deserialize_optional_date"
1394 )]
1395 pub settle_date: Option<NaiveDate>,
1396
1397 #[serde(
1399 rename = "@exDate",
1400 default,
1401 deserialize_with = "deserialize_optional_date"
1402 )]
1403 pub ex_date: Option<NaiveDate>,
1404
1405 #[serde(rename = "@conid", default)]
1408 pub conid: Option<String>,
1409
1410 #[serde(rename = "@symbol", default)]
1412 pub symbol: Option<String>,
1413
1414 #[serde(rename = "@assetCategory", default)]
1416 pub asset_category: Option<AssetCategory>,
1417
1418 #[serde(rename = "@cusip", default)]
1420 pub cusip: Option<String>,
1421
1422 #[serde(rename = "@isin", default)]
1424 pub isin: Option<String>,
1425
1426 #[serde(rename = "@figi", default)]
1428 pub figi: Option<String>,
1429
1430 #[serde(rename = "@securityID", default)]
1432 pub security_id: Option<String>,
1433
1434 #[serde(rename = "@securityIDType", default)]
1436 pub security_id_type: Option<String>,
1437
1438 #[serde(
1441 rename = "@multiplier",
1442 default,
1443 deserialize_with = "deserialize_optional_decimal"
1444 )]
1445 pub multiplier: Option<Decimal>,
1446
1447 #[serde(
1449 rename = "@strike",
1450 default,
1451 deserialize_with = "deserialize_optional_decimal"
1452 )]
1453 pub strike: Option<Decimal>,
1454
1455 #[serde(
1457 rename = "@expiry",
1458 default,
1459 deserialize_with = "deserialize_optional_date"
1460 )]
1461 pub expiry: Option<NaiveDate>,
1462
1463 #[serde(rename = "@putCall", default)]
1465 pub put_call: Option<PutCall>,
1466
1467 #[serde(rename = "@underlyingConid", default)]
1469 pub underlying_conid: Option<String>,
1470
1471 #[serde(rename = "@underlyingSymbol", default)]
1473 pub underlying_symbol: Option<String>,
1474
1475 #[serde(rename = "@code", default)]
1477 pub code: Option<String>,
1478
1479 #[serde(rename = "@dateTime", default)]
1485 pub date_time: Option<String>,
1486
1487 #[serde(
1489 rename = "@reportDate",
1490 default,
1491 deserialize_with = "deserialize_optional_date"
1492 )]
1493 pub report_date: Option<NaiveDate>,
1494
1495 #[serde(
1497 rename = "@availableForTradingDate",
1498 default,
1499 deserialize_with = "deserialize_optional_date"
1500 )]
1501 pub available_for_trading_date: Option<NaiveDate>,
1502
1503 #[serde(rename = "@actionID", default)]
1506 pub action_id: Option<String>,
1507
1508 #[serde(rename = "@tradeID", default)]
1510 pub trade_id: Option<String>,
1511
1512 #[serde(rename = "@clientReference", default)]
1514 pub client_reference: Option<String>,
1515
1516 #[serde(rename = "@issuer", default)]
1519 pub issuer: Option<String>,
1520
1521 #[serde(rename = "@issuerCountryCode", default)]
1523 pub issuer_country_code: Option<String>,
1524
1525 #[serde(rename = "@subCategory", default)]
1527 pub sub_category: Option<String>,
1528
1529 #[serde(rename = "@listingExchange", default)]
1531 pub listing_exchange: Option<String>,
1532
1533 #[serde(rename = "@underlyingListingExchange", default)]
1536 pub underlying_listing_exchange: Option<String>,
1537
1538 #[serde(rename = "@underlyingSecurityID", default)]
1540 pub underlying_security_id: Option<String>,
1541
1542 #[serde(
1545 rename = "@principalAdjustFactor",
1546 default,
1547 deserialize_with = "deserialize_optional_decimal"
1548 )]
1549 pub principal_adjust_factor: Option<Decimal>,
1550
1551 #[serde(rename = "@serialNumber", default)]
1554 pub serial_number: Option<String>,
1555
1556 #[serde(rename = "@deliveryType", default)]
1558 pub delivery_type: Option<String>,
1559
1560 #[serde(rename = "@commodityType", default)]
1562 pub commodity_type: Option<String>,
1563
1564 #[serde(
1566 rename = "@fineness",
1567 default,
1568 deserialize_with = "deserialize_optional_decimal"
1569 )]
1570 pub fineness: Option<Decimal>,
1571
1572 #[serde(rename = "@weight", default)]
1574 pub weight: Option<String>,
1575
1576 #[serde(rename = "@levelOfDetail", default)]
1579 pub level_of_detail: Option<String>,
1580
1581 #[serde(rename = "@model", default)]
1583 pub model: Option<String>,
1584
1585 #[serde(rename = "@acctAlias", default)]
1587 pub acct_alias: Option<String>,
1588}
1589
1590#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1634pub struct CorporateAction {
1635 #[serde(rename = "@accountId")]
1641 pub account_id: String,
1642
1643 #[serde(rename = "@transactionID", default)]
1645 pub transaction_id: Option<String>,
1646
1647 #[serde(rename = "@type", default)]
1650 pub action_type: Option<String>,
1651
1652 #[serde(rename = "@description", default)]
1654 pub description: Option<String>,
1655
1656 #[serde(
1659 rename = "@date",
1660 default,
1661 deserialize_with = "deserialize_optional_date"
1662 )]
1663 pub action_date: Option<NaiveDate>,
1664
1665 #[serde(
1667 rename = "@reportDate",
1668 deserialize_with = "crate::parsers::xml_utils::deserialize_flex_date"
1669 )]
1670 pub report_date: NaiveDate,
1671
1672 #[serde(
1674 rename = "@exDate",
1675 default,
1676 deserialize_with = "deserialize_optional_date"
1677 )]
1678 pub ex_date: Option<NaiveDate>,
1679
1680 #[serde(
1682 rename = "@payDate",
1683 default,
1684 deserialize_with = "deserialize_optional_date"
1685 )]
1686 pub pay_date: Option<NaiveDate>,
1687
1688 #[serde(
1690 rename = "@recordDate",
1691 default,
1692 deserialize_with = "deserialize_optional_date"
1693 )]
1694 pub record_date: Option<NaiveDate>,
1695
1696 #[serde(rename = "@conid")]
1699 pub conid: String,
1700
1701 #[serde(rename = "@symbol")]
1703 pub symbol: String,
1704
1705 #[serde(rename = "@assetCategory", default)]
1707 pub asset_category: Option<AssetCategory>,
1708
1709 #[serde(rename = "@cusip", default)]
1711 pub cusip: Option<String>,
1712
1713 #[serde(rename = "@isin", default)]
1715 pub isin: Option<String>,
1716
1717 #[serde(rename = "@figi", default)]
1719 pub figi: Option<String>,
1720
1721 #[serde(rename = "@securityID", default)]
1723 pub security_id: Option<String>,
1724
1725 #[serde(rename = "@securityIDType", default)]
1727 pub security_id_type: Option<String>,
1728
1729 #[serde(
1732 rename = "@multiplier",
1733 default,
1734 deserialize_with = "deserialize_optional_decimal"
1735 )]
1736 pub multiplier: Option<Decimal>,
1737
1738 #[serde(
1740 rename = "@strike",
1741 default,
1742 deserialize_with = "deserialize_optional_decimal"
1743 )]
1744 pub strike: Option<Decimal>,
1745
1746 #[serde(
1748 rename = "@expiry",
1749 default,
1750 deserialize_with = "deserialize_optional_date"
1751 )]
1752 pub expiry: Option<NaiveDate>,
1753
1754 #[serde(rename = "@putCall", default)]
1756 pub put_call: Option<PutCall>,
1757
1758 #[serde(rename = "@underlyingConid", default)]
1760 pub underlying_conid: Option<String>,
1761
1762 #[serde(rename = "@underlyingSymbol", default)]
1764 pub underlying_symbol: Option<String>,
1765
1766 #[serde(
1769 rename = "@quantity",
1770 default,
1771 deserialize_with = "deserialize_optional_decimal"
1772 )]
1773 pub quantity: Option<Decimal>,
1774
1775 #[serde(
1777 rename = "@amount",
1778 default,
1779 deserialize_with = "deserialize_optional_decimal"
1780 )]
1781 pub amount: Option<Decimal>,
1782
1783 #[serde(
1785 rename = "@proceeds",
1786 default,
1787 deserialize_with = "deserialize_optional_decimal"
1788 )]
1789 pub proceeds: Option<Decimal>,
1790
1791 #[serde(
1793 rename = "@value",
1794 default,
1795 deserialize_with = "deserialize_optional_decimal"
1796 )]
1797 pub value: Option<Decimal>,
1798
1799 #[serde(
1801 rename = "@cost",
1802 default,
1803 deserialize_with = "deserialize_optional_decimal"
1804 )]
1805 pub cost: Option<Decimal>,
1806
1807 #[serde(
1810 rename = "@fifoPnlRealized",
1811 default,
1812 deserialize_with = "deserialize_optional_decimal"
1813 )]
1814 pub fifo_pnl_realized: Option<Decimal>,
1815
1816 #[serde(
1818 rename = "@mtmPnl",
1819 default,
1820 deserialize_with = "deserialize_optional_decimal"
1821 )]
1822 pub mtm_pnl: Option<Decimal>,
1823
1824 #[serde(rename = "@currency", default)]
1827 pub currency: Option<String>,
1828
1829 #[serde(
1831 rename = "@fxRateToBase",
1832 default,
1833 deserialize_with = "deserialize_optional_decimal"
1834 )]
1835 pub fx_rate_to_base: Option<Decimal>,
1836
1837 #[serde(rename = "@code", default)]
1839 pub code: Option<String>,
1840
1841 #[serde(rename = "@actionID", default)]
1847 pub action_id: Option<String>,
1848
1849 #[serde(rename = "@dateTime", default)]
1852 pub date_time: Option<String>,
1853
1854 #[serde(rename = "@issuer", default)]
1857 pub issuer: Option<String>,
1858
1859 #[serde(rename = "@issuerCountryCode", default)]
1861 pub issuer_country_code: Option<String>,
1862
1863 #[serde(rename = "@subCategory", default)]
1865 pub sub_category: Option<String>,
1866
1867 #[serde(rename = "@listingExchange", default)]
1869 pub listing_exchange: Option<String>,
1870
1871 #[serde(rename = "@underlyingListingExchange", default)]
1874 pub underlying_listing_exchange: Option<String>,
1875
1876 #[serde(rename = "@underlyingSecurityID", default)]
1878 pub underlying_security_id: Option<String>,
1879
1880 #[serde(
1883 rename = "@accruedInt",
1884 default,
1885 deserialize_with = "deserialize_optional_decimal"
1886 )]
1887 pub accrued_int: Option<Decimal>,
1888
1889 #[serde(
1891 rename = "@principalAdjustFactor",
1892 default,
1893 deserialize_with = "deserialize_optional_decimal"
1894 )]
1895 pub principal_adjust_factor: Option<Decimal>,
1896
1897 #[serde(rename = "@serialNumber", default)]
1900 pub serial_number: Option<String>,
1901
1902 #[serde(rename = "@deliveryType", default)]
1904 pub delivery_type: Option<String>,
1905
1906 #[serde(rename = "@commodityType", default)]
1908 pub commodity_type: Option<String>,
1909
1910 #[serde(
1912 rename = "@fineness",
1913 default,
1914 deserialize_with = "deserialize_optional_decimal"
1915 )]
1916 pub fineness: Option<Decimal>,
1917
1918 #[serde(rename = "@weight", default)]
1920 pub weight: Option<String>,
1921
1922 #[serde(rename = "@levelOfDetail", default)]
1925 pub level_of_detail: Option<String>,
1926
1927 #[serde(rename = "@model", default)]
1929 pub model: Option<String>,
1930
1931 #[serde(rename = "@acctAlias", default)]
1933 pub acct_alias: Option<String>,
1934}
1935
1936#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
1978pub struct SecurityInfo {
1979 #[serde(rename = "@assetCategory")]
1985 pub asset_category: AssetCategory,
1986
1987 #[serde(rename = "@symbol")]
1989 pub symbol: String,
1990
1991 #[serde(rename = "@description", default)]
1993 pub description: Option<String>,
1994
1995 #[serde(rename = "@conid")]
1997 pub conid: String,
1998
1999 #[serde(rename = "@securityID", default)]
2001 pub security_id: Option<String>,
2002
2003 #[serde(rename = "@securityIDType", default)]
2005 pub security_id_type: Option<String>,
2006
2007 #[serde(rename = "@cusip", default)]
2009 pub cusip: Option<String>,
2010
2011 #[serde(rename = "@isin", default)]
2013 pub isin: Option<String>,
2014
2015 #[serde(rename = "@figi", default)]
2017 pub figi: Option<String>,
2018
2019 #[serde(rename = "@sedol", default)]
2021 pub sedol: Option<String>,
2022
2023 #[serde(
2026 rename = "@multiplier",
2027 default,
2028 deserialize_with = "deserialize_optional_decimal"
2029 )]
2030 pub multiplier: Option<Decimal>,
2031
2032 #[serde(
2034 rename = "@strike",
2035 default,
2036 deserialize_with = "deserialize_optional_decimal"
2037 )]
2038 pub strike: Option<Decimal>,
2039
2040 #[serde(
2042 rename = "@expiry",
2043 default,
2044 deserialize_with = "deserialize_optional_date"
2045 )]
2046 pub expiry: Option<NaiveDate>,
2047
2048 #[serde(rename = "@putCall", default)]
2050 pub put_call: Option<PutCall>,
2051
2052 #[serde(rename = "@underlyingConid", default)]
2054 pub underlying_conid: Option<String>,
2055
2056 #[serde(rename = "@underlyingSymbol", default)]
2058 pub underlying_symbol: Option<String>,
2059
2060 #[serde(
2063 rename = "@maturity",
2064 default,
2065 deserialize_with = "deserialize_optional_date"
2066 )]
2067 pub maturity: Option<NaiveDate>,
2068
2069 #[serde(
2071 rename = "@principalAdjustFactor",
2072 default,
2073 deserialize_with = "deserialize_optional_decimal"
2074 )]
2075 pub principal_adjust_factor: Option<Decimal>,
2076
2077 #[serde(rename = "@currency", default)]
2080 pub currency: Option<String>,
2081
2082 #[serde(rename = "@listingExchange", default)]
2088 pub listing_exchange: Option<String>,
2089
2090 #[serde(rename = "@underlyingSecurityID", default)]
2092 pub underlying_security_id: Option<String>,
2093
2094 #[serde(rename = "@underlyingListingExchange", default)]
2096 pub underlying_listing_exchange: Option<String>,
2097
2098 #[serde(rename = "@issuer", default)]
2101 pub issuer: Option<String>,
2102
2103 #[serde(rename = "@issuerCountryCode", default)]
2105 pub issuer_country_code: Option<String>,
2106
2107 #[serde(rename = "@subCategory", default)]
2109 pub sub_category: Option<String>,
2110
2111 #[serde(rename = "@deliveryMonth", default)]
2114 pub delivery_month: Option<String>,
2115
2116 #[serde(rename = "@serialNumber", default)]
2119 pub serial_number: Option<String>,
2120
2121 #[serde(rename = "@deliveryType", default)]
2123 pub delivery_type: Option<String>,
2124
2125 #[serde(rename = "@commodityType", default)]
2127 pub commodity_type: Option<String>,
2128
2129 #[serde(
2131 rename = "@fineness",
2132 default,
2133 deserialize_with = "deserialize_optional_decimal"
2134 )]
2135 pub fineness: Option<Decimal>,
2136
2137 #[serde(rename = "@weight", default)]
2139 pub weight: Option<String>,
2140
2141 #[serde(rename = "@code", default)]
2144 pub code: Option<String>,
2145}
2146
2147#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
2181pub struct ConversionRate {
2182 #[serde(
2184 rename = "@reportDate",
2185 deserialize_with = "crate::parsers::xml_utils::deserialize_flex_date"
2186 )]
2187 pub report_date: NaiveDate,
2188
2189 #[serde(rename = "@fromCurrency")]
2191 pub from_currency: String,
2192
2193 #[serde(rename = "@toCurrency")]
2195 pub to_currency: String,
2196
2197 #[serde(rename = "@rate")]
2199 pub rate: Decimal,
2200}
2201
2202#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2204pub struct SecuritiesInfoWrapper {
2205 #[serde(rename = "SecurityInfo", default)]
2207 pub items: Vec<SecurityInfo>,
2208}
2209
2210#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2212pub struct ConversionRatesWrapper {
2213 #[serde(rename = "ConversionRate", default)]
2215 pub items: Vec<ConversionRate>,
2216}
2217
2218#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2222pub struct EquitySummaryWrapper {
2223 #[serde(rename = "EquitySummaryByReportDateInBase", default)]
2225 pub items: Vec<super::extended::EquitySummaryByReportDateInBase>,
2226}
2227
2228#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2230pub struct CashReportWrapper {
2231 #[serde(rename = "CashReportCurrency", default)]
2233 pub items: Vec<super::extended::CashReportCurrency>,
2234}
2235
2236#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2238pub struct TradeConfirmsWrapper {
2239 #[serde(rename = "TradeConfirm", default)]
2241 pub items: Vec<super::extended::TradeConfirm>,
2242}
2243
2244#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2246pub struct OptionEAEWrapper {
2247 #[serde(rename = "OptionEAE", default)]
2249 pub items: Vec<super::extended::OptionEAE>,
2250}
2251
2252#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2254pub struct FxTransactionsWrapper {
2255 #[serde(rename = "FxTransaction", default)]
2257 pub items: Vec<super::extended::FxTransaction>,
2258}
2259
2260#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2262pub struct ChangeInDividendAccrualsWrapper {
2263 #[serde(rename = "ChangeInDividendAccrual", default)]
2265 pub items: Vec<super::extended::ChangeInDividendAccrual>,
2266}
2267
2268#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2270pub struct OpenDividendAccrualsWrapper {
2271 #[serde(rename = "OpenDividendAccrual", default)]
2273 pub items: Vec<super::extended::OpenDividendAccrual>,
2274}
2275
2276#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2278pub struct InterestAccrualsWrapper {
2279 #[serde(rename = "InterestAccrualsCurrency", default)]
2281 pub items: Vec<super::extended::InterestAccrualsCurrency>,
2282}
2283
2284#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2286pub struct TransfersWrapper {
2287 #[serde(rename = "Transfer", default)]
2289 pub items: Vec<super::extended::Transfer>,
2290}
2291
2292#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2296pub struct MTMPerformanceSummaryWrapper {
2297 #[serde(rename = "MTMPerformanceSummaryUnderlying", default)]
2299 pub items: Vec<super::extended::MTMPerformanceSummaryUnderlying>,
2300}
2301
2302#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2304pub struct FIFOPerformanceSummaryWrapper {
2305 #[serde(rename = "FIFOPerformanceSummaryUnderlying", default)]
2307 pub items: Vec<super::extended::FIFOPerformanceSummaryUnderlying>,
2308}
2309
2310#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2312pub struct MTDYTDPerformanceSummaryWrapper {
2313 #[serde(rename = "MTDYTDPerformanceSummaryUnderlying", default)]
2315 pub items: Vec<super::extended::MTDYTDPerformanceSummary>,
2316}
2317
2318#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2320pub struct StatementOfFundsWrapper {
2321 #[serde(rename = "StatementOfFundsLine", default)]
2323 pub items: Vec<super::extended::StatementOfFundsLine>,
2324}
2325
2326#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2328pub struct ChangeInPositionValueWrapper {
2329 #[serde(rename = "ChangeInPositionValue", default)]
2331 pub items: Vec<super::extended::ChangeInPositionValue>,
2332}
2333
2334#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2336pub struct UnbundledCommissionDetailWrapper {
2337 #[serde(rename = "UnbundledCommissionDetail", default)]
2339 pub items: Vec<super::extended::UnbundledCommissionDetail>,
2340}
2341
2342#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2344pub struct ClientFeesWrapper {
2345 #[serde(rename = "ClientFee", default)]
2347 pub items: Vec<super::extended::ClientFee>,
2348}
2349
2350#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2352pub struct ClientFeesDetailWrapper {
2353 #[serde(rename = "ClientFeesDetail", default)]
2355 pub items: Vec<super::extended::ClientFeesDetail>,
2356}
2357
2358#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2360pub struct SLBActivitiesWrapper {
2361 #[serde(rename = "SLBActivity", default)]
2363 pub items: Vec<super::extended::SLBActivity>,
2364}
2365
2366#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2368pub struct SLBFeesWrapper {
2369 #[serde(rename = "SLBFee", default)]
2371 pub items: Vec<super::extended::SLBFee>,
2372}
2373
2374#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2376pub struct HardToBorrowDetailsWrapper {
2377 #[serde(rename = "HardToBorrowDetail", default)]
2379 pub items: Vec<super::extended::HardToBorrowDetail>,
2380}
2381
2382#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2384pub struct FxLotsWrapper {
2385 #[serde(rename = "FxLot", default)]
2387 pub items: Vec<super::extended::FxLot>,
2388}
2389
2390#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2392pub struct UnsettledTransfersWrapper {
2393 #[serde(rename = "UnsettledTransfer", default)]
2395 pub items: Vec<super::extended::UnsettledTransfer>,
2396}
2397
2398#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2400pub struct TradeTransfersWrapper {
2401 #[serde(rename = "TradeTransfer", default)]
2403 pub items: Vec<super::extended::TradeTransfer>,
2404}
2405
2406#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2408pub struct PriorPeriodPositionsWrapper {
2409 #[serde(rename = "PriorPeriodPosition", default)]
2411 pub items: Vec<super::extended::PriorPeriodPosition>,
2412}
2413
2414#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2416pub struct TierInterestDetailsWrapper {
2417 #[serde(rename = "TierInterestDetail", default)]
2419 pub items: Vec<super::extended::TierInterestDetail>,
2420}
2421
2422#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2424pub struct DebitCardActivitiesWrapper {
2425 #[serde(rename = "DebitCardActivity", default)]
2427 pub items: Vec<super::extended::DebitCardActivity>,
2428}
2429
2430#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2432pub struct SalesTaxWrapper {
2433 #[serde(rename = "SalesTax", default)]
2435 pub items: Vec<super::extended::SalesTax>,
2436}
2437
2438#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2440pub struct SymbolSummaryWrapper {
2441 #[serde(rename = "SymbolSummary", default)]
2443 pub items: Vec<super::extended::SymbolSummary>,
2444}
2445
2446#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2448pub struct AssetSummaryWrapper {
2449 #[serde(rename = "AssetSummary", default)]
2451 pub items: Vec<super::extended::AssetSummary>,
2452}
2453
2454#[derive(Debug, Clone, PartialEq, Default, Deserialize, Serialize)]
2456pub struct OrdersWrapper {
2457 #[serde(rename = "Order", default)]
2459 pub items: Vec<super::extended::Order>,
2460}