1use serde::{Deserialize, Serialize};
2
3#[allow(clippy::upper_case_acronyms)]
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
5pub enum Market {
6 NZX,
8 ASX,
10 NYSE,
12 NASDAQ,
14 LSE,
16 FundAU,
18 FundNZ,
20 #[serde(rename = "mFund")]
22 MFund,
23 EURONEXT,
25 CNSX,
27 TSE,
29 CVE,
31 HKG,
33 OTHER,
35 SGX,
37 JSE,
39 FRA,
41 SWX,
43 TYO,
45 BIT,
47 BME,
49 BSE,
51 NSE,
53 FX,
55 FundCA,
57 AMEX,
59 OTCBB,
61 OTC,
63 SHE,
65 KRX,
67 TAI,
69 MFQS,
71 BATS,
73 FundUK,
75 STO,
77 CSE,
79 ICE,
81 HEL,
83 OSL,
85 KLS,
87 SHG,
89 DUB,
91 MISX,
93 BKK,
95 WAR,
97 KOSDAQ,
99 TLV,
101 BDP,
103 NEO,
105 FundUS,
107 PSE,
109 ASE,
111 BVMF,
113 BMV,
115 BVL,
117 CRYPTO,
119 IDX,
121 BVB,
123 FundIE,
125 VIE,
127 FundLU,
129 PHS,
131 GOLDIE,
133 BIST,
135 CXA,
137 XETR,
139 METAL,
141}
142
143#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
144#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
145pub enum TradeDescription {
146 Buy,
148 Sell,
150 Split,
152 Bonus,
154 Consold,
156 Cancel,
158 CapitalReturn,
160 OpeningBalance,
162 AdjustCostBase,
164 MergeCancel,
166 MergeBuy,
168 CapitalCall,
170}
171
172#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
173pub enum PayoutDescription {
174 #[serde(rename = "DIV")]
176 Dividend,
177 #[serde(rename = "REP")]
179 CapitalRepayment,
180 #[serde(rename = "INT")]
182 InterestPayment,
183 #[serde(rename = "DIS")]
185 Distribution,
186}
187
188#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
189pub enum Country {
190 #[serde(rename = "AF")]
192 Afghanistan,
193 #[serde(rename = "AL")]
195 Albania,
196 #[serde(rename = "DZ")]
198 Algeria,
199 #[serde(rename = "AS")]
201 AmericanSamoa,
202 #[serde(rename = "AD")]
204 Andorra,
205 #[serde(rename = "AO")]
207 Angola,
208 #[serde(rename = "AI")]
210 Anguilla,
211 #[serde(rename = "AQ")]
213 Antarctica,
214 #[serde(rename = "AG")]
216 AntiguaAndBarbuda,
217 #[serde(rename = "AR")]
219 Argentina,
220 #[serde(rename = "AM")]
222 Armenia,
223 #[serde(rename = "AW")]
225 Aruba,
226 #[serde(rename = "_AS")]
228 Asia,
229 #[serde(rename = "AU")]
231 Australia,
232 #[serde(rename = "AT")]
234 Austria,
235 #[serde(rename = "AZ")]
237 Azerbaijan,
238 #[serde(rename = "BS")]
240 Bahamas,
241 #[serde(rename = "BH")]
243 Bahrain,
244 #[serde(rename = "BD")]
246 Bangladesh,
247 #[serde(rename = "BB")]
249 Barbados,
250 #[serde(rename = "BY")]
252 Belarus,
253 #[serde(rename = "BE")]
255 Belgium,
256 #[serde(rename = "BZ")]
258 Belize,
259 #[serde(rename = "BJ")]
261 Benin,
262 #[serde(rename = "BM")]
264 Bermuda,
265 #[serde(rename = "BT")]
267 Bhutan,
268 #[serde(rename = "XB")]
270 Bitcoin,
271 #[serde(rename = "BO")]
273 Bolivia,
274 #[serde(rename = "BQ")]
276 BonaireSintEustatiusAndSaba,
277 #[serde(rename = "BA")]
279 BosniaAndHerzegovina,
280 #[serde(rename = "BW")]
282 Botswana,
283 #[serde(rename = "BV")]
285 BouvetIsland,
286 #[serde(rename = "BR")]
288 Brazil,
289 #[serde(rename = "IO")]
291 BritishIndianOceanTerritory,
292 #[serde(rename = "BN")]
294 Brunei,
295 #[serde(rename = "BG")]
297 Bulgaria,
298 #[serde(rename = "BF")]
300 BurkinaFaso,
301 #[serde(rename = "BI")]
303 Burundi,
304 #[serde(rename = "KH")]
306 Cambodia,
307 #[serde(rename = "CM")]
309 Cameroon,
310 #[serde(rename = "CA")]
312 Canada,
313 #[serde(rename = "CV")]
315 CapeVerde,
316 #[serde(rename = "KY")]
318 CaymanIslands,
319 #[serde(rename = "CF")]
321 CentralAfricanRepublic,
322 #[serde(rename = "TD")]
324 Chad,
325 #[serde(rename = "CL")]
327 Chile,
328 #[serde(rename = "CN")]
330 China,
331 #[serde(rename = "_CN")]
333 ChinaOffshore,
334 #[serde(rename = "CX")]
336 ChristmasIsland,
337 #[serde(rename = "CC")]
339 CocosKeelingIslands,
340 #[serde(rename = "CO")]
342 Colombia,
343 #[serde(rename = "KM")]
345 Comoros,
346 #[serde(rename = "CG")]
348 CongoRepublicOfTheDemocratic,
349 #[serde(rename = "CD")]
351 CongoBrazzaville,
352 #[serde(rename = "CK")]
354 CookIslands,
355 #[serde(rename = "CR")]
357 CostaRica,
358 #[serde(rename = "HR")]
360 Croatia,
361 #[serde(rename = "CU")]
363 Cuba,
364 #[serde(rename = "CW")]
366 Curaçao,
367 #[serde(rename = "CY")]
369 Cyprus,
370 #[serde(rename = "XCY")]
372 CyprusPreEuro,
373 #[serde(rename = "CZ")]
375 CzechRepublic,
376 #[serde(rename = "DK")]
378 Denmark,
379 #[serde(rename = "DJ")]
381 Djibouti,
382 #[serde(rename = "DM")]
384 Dominica,
385 #[serde(rename = "DO")]
387 DominicanRepublic,
388 #[serde(rename = "TP")]
390 EastTimorP,
391 #[serde(rename = "TL")]
393 EastTimorL,
394 #[serde(rename = "EC")]
396 Ecuador,
397 #[serde(rename = "EG")]
399 Egypt,
400 #[serde(rename = "SV")]
402 ElSalvador,
403 #[serde(rename = "GQ")]
405 EquatorialGuinea,
406 #[serde(rename = "ER")]
408 Eritrea,
409 #[serde(rename = "EE")]
411 Estonia,
412 #[serde(rename = "XEE")]
414 EstoniaPreEuro,
415 #[serde(rename = "ET")]
417 Ethiopia,
418 #[serde(rename = "XS")]
420 Europe,
421 #[serde(rename = "FK")]
423 FalklandIslands,
424 #[serde(rename = "FO")]
426 FaroeIslands,
427 #[serde(rename = "FJ")]
429 Fiji,
430 #[serde(rename = "FI")]
432 Finland,
433 #[serde(rename = "FR")]
435 France,
436 #[serde(rename = "GF")]
438 FrenchGuiana,
439 #[serde(rename = "PF")]
441 FrenchPolynesia,
442 #[serde(rename = "TF")]
444 FrenchSouthernTerritories,
445 #[serde(rename = "GA")]
447 Gabon,
448 #[serde(rename = "GM")]
450 Gambia,
451 #[serde(rename = "GE")]
453 Georgia,
454 #[serde(rename = "DE")]
456 Germany,
457 #[serde(rename = "GH")]
459 Ghana,
460 #[serde(rename = "GI")]
462 Gibraltar,
463 #[serde(rename = "GR")]
465 Greece,
466 #[serde(rename = "GL")]
468 Greenland,
469 #[serde(rename = "GD")]
471 Grenada,
472 #[serde(rename = "GP")]
474 Guadeloupe,
475 #[serde(rename = "GU")]
477 Guam,
478 #[serde(rename = "GT")]
480 Guatemala,
481 #[serde(rename = "GG")]
483 Guernsey,
484 #[serde(rename = "GN")]
486 Guinea,
487 #[serde(rename = "GW")]
489 GuineaBissau,
490 #[serde(rename = "GY")]
492 Guyana,
493 #[serde(rename = "HT")]
495 Haiti,
496 #[serde(rename = "HM")]
498 HeardAndMcDonaldIslands,
499 #[serde(rename = "HN")]
501 Honduras,
502 #[serde(rename = "HK")]
504 HongKong,
505 #[serde(rename = "HU")]
507 Hungary,
508 #[serde(rename = "IS")]
510 Iceland,
511 #[serde(rename = "IN")]
513 India,
514 #[serde(rename = "ID")]
516 Indonesia,
517 #[serde(rename = "_IN")]
519 International,
520 #[serde(rename = "IR")]
522 Iran,
523 #[serde(rename = "IQ")]
525 Iraq,
526 #[serde(rename = "IE")]
528 Ireland,
529 #[serde(rename = "IM")]
531 IsleOfMan,
532 #[serde(rename = "IL")]
534 Israel,
535 #[serde(rename = "IT")]
537 Italy,
538 #[serde(rename = "CI")]
540 IvoryCoast,
541 #[serde(rename = "JM")]
543 Jamaica,
544 #[serde(rename = "JP")]
546 Japan,
547 #[serde(rename = "JE")]
549 Jersey,
550 #[serde(rename = "JO")]
552 Jordan,
553 #[serde(rename = "KZ")]
555 Kazakhstan,
556 #[serde(rename = "KE")]
558 Kenya,
559 #[serde(rename = "KI")]
561 Kiribati,
562 #[serde(rename = "KW")]
564 Kuwait,
565 #[serde(rename = "KG")]
567 Kyrgyzstan,
568 #[serde(rename = "LA")]
570 LaoPeoplesDemocraticRepublic,
571 #[serde(rename = "_LA")]
573 LatinAmerica,
574 #[serde(rename = "LV")]
576 Latvia,
577 #[serde(rename = "XLV")]
579 LatviaPreEuro,
580 #[serde(rename = "LB")]
582 Lebanon,
583 #[serde(rename = "LS")]
585 Lesotho,
586 #[serde(rename = "LR")]
588 Liberia,
589 #[serde(rename = "LY")]
591 LibyanArabJamahiriya,
592 #[serde(rename = "LI")]
594 Liechtenstein,
595 #[serde(rename = "LT")]
597 Lithuania,
598 #[serde(rename = "XLT")]
600 LithuaniaPreEuro,
601 #[serde(rename = "LU")]
603 Luxembourg,
604 #[serde(rename = "MO")]
606 Macau,
607 #[serde(rename = "MG")]
609 Madagascar,
610 #[serde(rename = "MW")]
612 Malawi,
613 #[serde(rename = "MY")]
615 Malaysia,
616 #[serde(rename = "MV")]
618 Maldives,
619 #[serde(rename = "ML")]
621 Mali,
622 #[serde(rename = "MT")]
624 Malta,
625 #[serde(rename = "XMT")]
627 MaltaPreEuro,
628 #[serde(rename = "MH")]
630 MarshallIslands,
631 #[serde(rename = "MQ")]
633 Martinique,
634 #[serde(rename = "MR")]
636 Mauritania,
637 #[serde(rename = "MU")]
639 Mauritius,
640 #[serde(rename = "YT")]
642 Mayotte,
643 #[serde(rename = "MX")]
645 Mexico,
646 #[serde(rename = "FM")]
648 Micronesia,
649 #[serde(rename = "_ME")]
651 MiddleEast,
652 #[serde(rename = "MD")]
654 MoldovaRepublicOf,
655 #[serde(rename = "MC")]
657 Monaco,
658 #[serde(rename = "MN")]
660 Mongolia,
661 #[serde(rename = "ME")]
663 Montenegro,
664 #[serde(rename = "MS")]
666 Montserrat,
667 #[serde(rename = "MA")]
669 Morocco,
670 #[serde(rename = "MZ")]
672 Mozambique,
673 #[serde(rename = "MM")]
675 Myanmar,
676 #[serde(rename = "NA")]
678 Namibia,
679 #[serde(rename = "NR")]
681 Nauru,
682 #[serde(rename = "NP")]
684 Nepal,
685 #[serde(rename = "NL")]
687 Netherlands,
688 #[serde(rename = "AN")]
690 NetherlandsAntilles,
691 #[serde(rename = "NC")]
693 NewCaledonia,
694 #[serde(rename = "NZ")]
696 NewZealand,
697 #[serde(rename = "NI")]
699 Nicaragua,
700 #[serde(rename = "NE")]
702 Niger,
703 #[serde(rename = "NG")]
705 Nigeria,
706 #[serde(rename = "NU")]
708 Niue,
709 #[serde(rename = "NF")]
711 NorfolkIsland,
712 #[serde(rename = "KP")]
714 NorthKorea,
715 #[serde(rename = "MK")]
717 NorthMacedonia,
718 #[serde(rename = "MP")]
720 NorthernMarianaIslands,
721 #[serde(rename = "NO")]
723 Norway,
724 #[serde(rename = "OM")]
726 Oman,
727 #[serde(rename = "PK")]
729 Pakistan,
730 #[serde(rename = "PW")]
732 Palau,
733 #[serde(rename = "PA")]
735 Panama,
736 #[serde(rename = "PG")]
738 PapuaNewGuinea,
739 #[serde(rename = "PY")]
741 Paraguay,
742 #[serde(rename = "PE")]
744 Peru,
745 #[serde(rename = "PH")]
747 Philippines,
748 #[serde(rename = "PN")]
750 Pitcairn,
751 #[serde(rename = "PL")]
753 Poland,
754 #[serde(rename = "PT")]
756 Portugal,
757 #[serde(rename = "PR")]
759 PuertoRico,
760 #[serde(rename = "QA")]
762 Qatar,
763 #[serde(rename = "RE")]
765 Reunion,
766 #[serde(rename = "RO")]
768 Romania,
769 #[serde(rename = "RU")]
771 RussianFederation,
772 #[serde(rename = "RW")]
774 Rwanda,
775 #[serde(rename = "BL")]
777 SaintBarthélemy,
778 #[serde(rename = "SH")]
780 SaintHelena,
781 #[serde(rename = "KN")]
783 SaintKitts,
784 #[serde(rename = "LC")]
786 SaintLucia,
787 #[serde(rename = "MF")]
789 SaintMartin,
790 #[serde(rename = "PM")]
792 SaintPierreAndMiquelon,
793 #[serde(rename = "VC")]
795 SaintVincentGrenadines,
796 #[serde(rename = "WS")]
798 Samoa,
799 #[serde(rename = "SM")]
801 SanMarino,
802 #[serde(rename = "ST")]
804 SaoTomeAndPrincipe,
805 #[serde(rename = "SA")]
807 SaudiArabia,
808 #[serde(rename = "SN")]
810 Senegal,
811 #[serde(rename = "RS")]
813 Serbia,
814 #[serde(rename = "SC")]
816 Seychelles,
817 #[serde(rename = "SL")]
819 SierraLeone,
820 #[serde(rename = "SG")]
822 Singapore,
823 #[serde(rename = "SX")]
825 SintMaarten,
826 #[serde(rename = "SK")]
828 Slovakia,
829 #[serde(rename = "XSK")]
831 SlovakiaPreEuro,
832 #[serde(rename = "SI")]
834 Slovenia,
835 #[serde(rename = "SB")]
837 SolomonIslands,
838 #[serde(rename = "SO")]
840 Somalia,
841 #[serde(rename = "ZA")]
843 SouthAfrica,
844 #[serde(rename = "GS")]
846 SouthGeorgiaAndTheSouthSandwichIslands,
847 #[serde(rename = "KR")]
849 SouthKorea,
850 #[serde(rename = "SS")]
852 SouthSudan,
853 #[serde(rename = "ES")]
855 Spain,
856 #[serde(rename = "LK")]
858 SriLanka,
859 #[serde(rename = "PS")]
861 StateOfPalestine,
862 #[serde(rename = "SD")]
864 Sudan,
865 #[serde(rename = "SR")]
867 Suriname,
868 #[serde(rename = "SJ")]
870 SvalbardAndJanMayenIslands,
871 #[serde(rename = "SZ")]
873 Swaziland,
874 #[serde(rename = "SE")]
876 Sweden,
877 #[serde(rename = "CH")]
879 Switzerland,
880 #[serde(rename = "SY")]
882 SyrianArabRepublic,
883 #[serde(rename = "TW")]
885 Taiwan,
886 #[serde(rename = "TJ")]
888 Tajikistan,
889 #[serde(rename = "TZ")]
891 Tanzania,
892 #[serde(rename = "TH")]
894 Thailand,
895 #[serde(rename = "TG")]
897 Togo,
898 #[serde(rename = "TK")]
900 Tokelau,
901 #[serde(rename = "TO")]
903 Tonga,
904 #[serde(rename = "TT")]
906 TrinidadAndTobago,
907 #[serde(rename = "TN")]
909 Tunisia,
910 #[serde(rename = "TR")]
912 Turkey,
913 #[serde(rename = "TM")]
915 Turkmenistan,
916 #[serde(rename = "TC")]
918 TurksAndCaicosIslands,
919 #[serde(rename = "TV")]
921 Tuvalu,
922 #[serde(rename = "UG")]
924 Uganda,
925 #[serde(rename = "UA")]
927 Ukraine,
928 #[serde(rename = "AE")]
930 UnitedArabEmirates,
931 #[serde(rename = "GB")]
933 UnitedKingdom,
934 #[serde(rename = "US")]
936 UnitedStates,
937 #[serde(rename = "UM")]
939 UnitedStatesMinorOutlyingIslands,
940 #[serde(rename = "UN")]
942 Unknown,
943 #[serde(rename = "UY")]
945 Uruguay,
946 #[serde(rename = "UZ")]
948 Uzbekistan,
949 #[serde(rename = "VU")]
951 Vanuatu,
952 #[serde(rename = "VA")]
954 VaticanCityState,
955 #[serde(rename = "VE")]
957 Venezuela,
958 #[serde(rename = "VN")]
960 Vietnam,
961 #[serde(rename = "VG")]
963 VirginIslandsBritish,
964 #[serde(rename = "VI")]
966 VirginIslandsUS,
967 #[serde(rename = "WF")]
969 WallisAndFutunaIslands,
970 #[serde(rename = "EH")]
972 WesternSahara,
973 #[serde(rename = "YE")]
975 Yemen,
976 #[serde(rename = "ZM")]
978 Zambia,
979 #[serde(rename = "ZW")]
981 Zimbabwe,
982 #[serde(rename = "AX")]
984 ÅlandIslands,
985}
986
987#[allow(clippy::upper_case_acronyms)]
988#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
989pub enum Currency {
990 AFN,
992 ALL,
994 DZD,
996 ARS,
998 AMD,
1000 AUD,
1002 AZN,
1004 BSD,
1006 BHD,
1008 THB,
1010 BBD,
1012 BYN,
1014 BZD,
1016 BMD,
1018 #[serde(alias = "XBT")]
1020 BTC,
1021 BTS,
1023 VEF,
1025 BOB,
1027 BAM,
1029 BRL,
1031 BND,
1033 BIF,
1035 XOF,
1037 XAF,
1039 XPF,
1041 CAD,
1043 KYD,
1045 CLP,
1047 CNH,
1049 COP,
1051 KMF,
1053 CDF,
1055 NIO,
1057 CRC,
1059 HRK,
1061 CUP,
1063 CYP,
1065 GMD,
1067 DKK,
1069 DAS,
1071 SDG,
1073 MAD,
1075 AED,
1077 DJF,
1079 STD,
1081 DOP,
1083 VND,
1085 XCD,
1087 EGP,
1089 CVE,
1091 EEK,
1093 ETH,
1095 ETB,
1097 EUR,
1099 FKP,
1101 FJD,
1103 HUF,
1105 GIP,
1107 HTG,
1109 GNF,
1111 GYD,
1113 HKD,
1115 UAH,
1117 ISK,
1119 INR,
1121 IDR,
1123 IRR,
1125 IQD,
1127 JMD,
1129 JPY,
1131 JOD,
1133 KZT,
1135 KES,
1137 PGK,
1139 LAK,
1141 CZK,
1143 SKK,
1145 SEK,
1147 KWD,
1149 ZMK,
1151 MMK,
1153 GEL,
1155 LVL,
1157 LBP,
1159 HNL,
1161 SLL,
1163 MDL,
1165 RON,
1167 BGN,
1169 LRD,
1171 LYD,
1173 SZL,
1175 TRY,
1177 LTL,
1179 LTC,
1181 LSL,
1183 MOP,
1185 MKD,
1187 MGA,
1189 MWK,
1191 MVR,
1193 MTL,
1195 TMT,
1197 MUR,
1199 MZN,
1201 MXN,
1203 XMR,
1205 NGN,
1207 NAD,
1209 NPR,
1211 ANG,
1213 TWD,
1215 NZD,
1217 KPW,
1219 NOK,
1221 PEN,
1223 OMR,
1225 MRO,
1227 PKR,
1229 TOP,
1231 PAB,
1233 PYG,
1235 PHP,
1237 GBP,
1239 BWP,
1241 QAR,
1243 GTQ,
1245 ZAR,
1247 YER,
1249 KHR,
1251 MYR,
1253 XRP,
1255 SAR,
1257 RUB,
1259 RWF,
1261 SVC,
1263 RSD,
1265 SCR,
1267 ILS,
1269 SOS,
1271 TZS,
1273 UGX,
1275 SGD,
1277 SBD,
1279 KGS,
1281 KRW,
1283 LKR,
1285 XLM,
1287 ECS,
1289 SRD,
1291 CHF,
1293 SYP,
1295 TJS,
1297 BDT,
1299 TTD,
1301 MNT,
1303 TND,
1305 USD,
1307 UYU,
1309 UZS,
1311 VUV,
1313 CNY,
1315 ZWD,
1317 PLN,
1319 USDT,
1321}
1322
1323#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
1324pub enum SaleAllocationMethod {
1325 #[serde(rename = "average")]
1327 AverageCost,
1328 #[serde(rename = "default")]
1330 PortfolioDefault,
1331 #[serde(rename = "fifo")]
1333 FirstInFirstOut,
1334 #[serde(rename = "lifo")]
1336 LastInFirstOut,
1337 #[serde(rename = "maximise_cr")]
1339 MaximiseGain,
1340 #[serde(rename = "minimise_cr")]
1342 MinimiseGain,
1343 #[serde(rename = "ss_minimise")]
1345 MinimiseCgt,
1346}
1347
1348#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize)]
1349#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
1350pub enum CashAccountTransactionType {
1351 #[serde(rename = "OPENING BALANCE")]
1352 OpeningBalance,
1353 Deposit,
1354 Withdrawal,
1355 InterestPayment,
1356 Fee,
1357 FeeReimbursement,
1358}
1359
1360#[cfg(test)]
1361mod test {
1362 use serde::de::value;
1363
1364 use super::*;
1365
1366 type StrDeserializer<'a> = value::StrDeserializer<'a, value::Error>;
1367
1368 #[test]
1369 fn test_deserialize_btc_currency() {
1370 assert_eq!(
1371 Currency::BTC,
1372 Currency::deserialize(StrDeserializer::new("BTC")).unwrap(),
1373 );
1374 }
1375}