1use rust_decimal::Decimal;
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)]
6#[cfg_attr(feature = "juniper", derive(juniper::GraphQLObject))]
7pub struct CoinInfo {
8 pub name: String,
9 pub symbol: String,
10 pub max_supply: Option<Decimal>,
11 pub circulating_supply: Option<Decimal>,
12 pub total_supply: Option<Decimal>,
13 pub infinite_supply: bool,
14 pub price: Option<Decimal>,
15 pub volume_24h: Option<Decimal>,
16 pub volume_change_24h: Option<Decimal>,
17 pub percent_change_1h: Option<Decimal>,
18 pub percent_change_24h: Option<Decimal>,
19 pub percent_change_7d: Option<Decimal>,
20 pub percent_change_30d: Option<Decimal>,
21 pub percent_change_60d: Option<Decimal>,
22 pub percent_change_90d: Option<Decimal>,
23 pub market_cap: Option<Decimal>,
24 pub fully_diluted_market_cap: Option<Decimal>,
25 pub tags: Vec<String>,
26}
27
28#[derive(
29 Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord, Serialize, Deserialize, JsonSchema,
30)]
31#[cfg_attr(feature = "juniper", derive(juniper::GraphQLEnum))]
32pub enum CmeSecurityType {
33 CASH,
34 COMBO,
35 FRA,
36 FUT,
37 FWD,
38 IDX,
39 INDEX,
40 IRS,
41 OOC,
42 OOF,
43}
44
45#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)]
46#[serde(rename_all = "camelCase")]
47#[cfg_attr(feature = "juniper", derive(juniper::GraphQLObject))]
48pub struct CmeProductGroupInfo {
49 pub product_guid: Option<String>,
50 pub product_name: Option<String>,
51 pub security_type: CmeSecurityType,
52 pub clearing_symbol: Option<String>,
53 pub master_symbol: Option<String>,
54 pub exchange_clearing: Option<String>,
55 pub exchange_globex: Option<String>,
56 pub is_derived_block_eligible: Option<String>,
57 pub asset_class: Option<String>,
58 pub asset_sub_class: Option<String>,
59 pub sector: Option<String>,
60 pub sub_sector: Option<String>,
61 pub is_tas_product: Option<String>,
62 pub is_btic_product: Option<String>,
63 pub is_tam_product: Option<String>,
64 pub rfq_cross_eligible: Option<String>,
65 pub mass_quote_eligible: Option<String>,
66 pub daily_flag: Option<String>,
67 pub settle_px_ccy: Option<String>,
68 pub efr_eligible: Option<String>,
69 pub floor_put_symbol: Option<String>,
70 pub block_trade_eligible: Option<String>,
71 pub efp_eligible: Option<String>,
72 pub flex_eligible: Option<String>,
73 pub px_unit_of_measure_qty: Option<i32>,
74 pub negative_strike_eligible: Option<String>,
75 pub min_globex_ord_qty: Option<String>,
76 pub max_globex_ord_qty: Option<String>,
77 pub negative_px_eligible: Option<String>,
78 pub px_unit_of_measure: Option<String>,
79 pub trade_px_ccy: Option<String>,
80 pub floor_call_symbol: Option<String>,
81 pub ebf_eligible: Option<String>,
82 pub fractional: Option<String>,
83 pub globex_group_code: Option<String>,
84 pub itc_code: Option<String>,
85 pub price_band: Option<String>,
86 pub otc_eligible: Option<String>,
87 pub globex_gt_eligible: Option<String>,
88 pub px_quote_method: Option<String>,
89 pub last_updated: Option<String>,
90 pub market_segment_id: Option<i32>,
91 pub globex_match_algo: Option<String>,
92 pub ilink_eligible: Option<String>,
93 pub clearport_eligible: Option<String>,
94 pub unit_of_measure: Option<String>,
95 pub globex_eligible: Option<String>,
96 pub floor_eligible: Option<String>,
97 pub variable_qty_flag: Option<String>,
98 pub strategy_type: Option<String>,
99 pub assignment_method: Option<String>,
100 pub price_multiplier: Option<Decimal>,
101 pub main_fraction: Option<i32>,
102 pub unit_of_measure_qty: Option<Decimal>,
103 pub globex_product_code: Option<String>,
104 pub default_min_tick: Option<String>,
105 pub reduced_tick_notes: Option<String>,
106 pub min_qtrly_serial_tick: Option<String>,
107 pub min_outright_tick: Option<String>,
108 pub minimum_tick_note: Option<String>,
109 pub min_clearport_tick: Option<String>,
110 pub min_cabinet_tick_rules: Option<String>,
111 pub minimum_half_tick: Option<String>,
112 pub globex_min_tick: Option<String>,
113 pub min_clearport_floor_tick: Option<String>,
114 pub midcurve_tick_rules: Option<String>,
115 pub calendar_tick_rules: Option<String>,
116 pub floor_schedule: Option<String>,
117 pub std_trading_hours: Option<String>,
118 pub globex_schedule: Option<String>,
119 pub clearport_schedule: Option<String>,
120 pub tot_ltd: Option<String>,
121 pub tot_midcurve: Option<String>,
122 pub tot_quarterly: Option<String>,
123 pub tot_serial: Option<String>,
124 pub tot_clearport: Option<String>,
125 pub tot_globex: Option<String>,
126 pub tot_default: Option<String>,
127 pub tot_floor: Option<String>,
128 pub serial_listing_rules: Option<String>,
129 pub regular_listing_rules: Option<String>,
130 pub quarterly_listing_rules: Option<String>,
131 pub floor_listing_rules: Option<String>,
132 pub midcurve_options_rules: Option<String>,
133 pub default_listing_rules: Option<String>,
134 pub globex_listing_rules: Option<String>,
135 pub last_delivery_rules: Option<String>,
136 pub commodity_standards: Option<String>,
137 pub settle_method: Option<String>,
138 pub marker_stlmt_rules: Option<String>,
139 pub limit_rules: Option<String>,
140 pub days_or_hours: Option<String>,
141 pub reportable_positions: Option<String>,
142 pub price_quotation: Option<String>,
143 pub settlement_procedure: Option<String>,
144 pub exercise_style: Option<String>,
145 pub settlement_at_expiration: Option<String>,
146 pub strike_price_interval: Option<String>,
147 pub mdp3_channel: Option<String>,
148 pub globex_display_factor: Option<String>,
149 pub var_cab_px_high: Option<String>,
150 pub var_cab_px_low: Option<String>,
151 pub clearing_cab_px: Option<String>,
152 pub globex_cab_px: Option<String>,
153 pub is_synthetic_product: Option<String>,
154 pub itm_otm: Option<String>,
155 pub contrary_instructions_allowed: Option<String>,
156 pub settle_using_fixing_px: Option<String>,
157 pub settlement_type: Option<String>,
158 pub opt_style: Option<String>,
159 pub trading_cut_off_time: Option<String>,
160 pub is_taco_product: Option<String>,
161 pub exercise_style_american_european: Option<String>,
162 pub is_tmac_product: Option<String>,
163 pub clearing_org_id: Option<String>,
164 pub gc_basket_identifier: Option<String>,
165 pub globex_group_descr: Option<String>,
166 pub min_incremental_order: Option<String>,
167 pub par_or_money: Option<String>,
168 pub repo_year_days: Option<String>,
169 pub subtype: Option<String>,
170 pub valuation_method: Option<String>,
171 pub contract_notional_amount: Option<Decimal>,
172 pub rbt_eligible_ind: Option<String>,
173 pub dirty_price_tick: Option<String>,
174 pub dirty_price_rounding: Option<String>,
175 pub min_days_to_mat: Option<String>,
176 pub spread_pricing_convention: Option<String>,
177 pub is_pm_eligible: Option<String>,
178 pub fixing_time_zone: Option<String>,
179 pub settlement_locale: Option<String>,
180 pub trade_close_off_set: Option<String>,
181 pub on_sef: Option<String>,
182 pub price_precision: Option<String>,
183 pub on_mtf: Option<String>,
184 pub good_for_session: Option<String>,
185 pub fixing_source: Option<String>,
186 pub settl_ccy: Option<String>,
187 pub is_efix_product: Option<String>,
188 pub market_data: Option<String>,
189 pub fixed_payout: Option<f64>,
190 pub size_priority_qty: Option<String>,
191 pub top_eligible: Option<String>,
192 pub alt_globex_min_tick: Option<String>,
193 pub alt_globex_tick_constraint: Option<String>,
194 pub max_bid_ask_constraint: Option<String>,
195 pub alt_min_quote_life: Option<String>,
196 pub subfraction: Option<String>,
197 pub url: Option<String>,
198 pub category: Option<String>,
199 pub sub_category: Option<String>,
200}