1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "juniper", derive(juniper::GraphQLObject))]
pub struct CoinInfo {
    pub name: String,
    pub symbol: String,
    pub max_supply: Option<Decimal>,
    pub circulating_supply: Option<Decimal>,
    pub total_supply: Option<Decimal>,
    pub infinite_supply: bool,
    pub price: Option<Decimal>,
    pub volume_24h: Option<Decimal>,
    pub volume_change_24h: Option<Decimal>,
    pub percent_change_1h: Option<Decimal>,
    pub percent_change_24h: Option<Decimal>,
    pub percent_change_7d: Option<Decimal>,
    pub percent_change_30d: Option<Decimal>,
    pub percent_change_60d: Option<Decimal>,
    pub percent_change_90d: Option<Decimal>,
    pub market_cap: Option<Decimal>,
    pub fully_diluted_market_cap: Option<Decimal>,
    pub tags: Vec<String>,
}

#[derive(Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord, Serialize, Deserialize)]
#[cfg_attr(feature = "juniper", derive(juniper::GraphQLEnum))]
pub enum CmeSecurityType {
    CASH,
    COMBO,
    FRA,
    FUT,
    FWD,
    IDX,
    INDEX,
    IRS,
    OOC,
    OOF,
}

#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(feature = "juniper", derive(juniper::GraphQLObject))]
pub struct CmeProductGroupInfo {
    pub product_guid: Option<String>,
    pub product_name: Option<String>,
    pub security_type: CmeSecurityType,
    pub clearing_symbol: Option<String>,
    pub master_symbol: Option<String>,
    pub exchange_clearing: Option<String>,
    pub exchange_globex: Option<String>,
    pub is_derived_block_eligible: Option<String>,
    pub asset_class: Option<String>,
    pub asset_sub_class: Option<String>,
    pub sector: Option<String>,
    pub sub_sector: Option<String>,
    pub is_tas_product: Option<String>,
    pub is_btic_product: Option<String>,
    pub is_tam_product: Option<String>,
    pub rfq_cross_eligible: Option<String>,
    pub mass_quote_eligible: Option<String>,
    pub daily_flag: Option<String>,
    pub settle_px_ccy: Option<String>,
    pub efr_eligible: Option<String>,
    pub floor_put_symbol: Option<String>,
    pub block_trade_eligible: Option<String>,
    pub efp_eligible: Option<String>,
    pub flex_eligible: Option<String>,
    pub px_unit_of_measure_qty: Option<i32>,
    pub negative_strike_eligible: Option<String>,
    pub min_globex_ord_qty: Option<String>,
    pub max_globex_ord_qty: Option<String>,
    pub negative_px_eligible: Option<String>,
    pub px_unit_of_measure: Option<String>,
    pub trade_px_ccy: Option<String>,
    pub floor_call_symbol: Option<String>,
    pub ebf_eligible: Option<String>,
    pub fractional: Option<String>,
    pub globex_group_code: Option<String>,
    pub itc_code: Option<String>,
    pub price_band: Option<String>,
    pub otc_eligible: Option<String>,
    pub globex_gt_eligible: Option<String>,
    pub px_quote_method: Option<String>,
    pub last_updated: Option<String>,
    pub market_segment_id: Option<i32>,
    pub globex_match_algo: Option<String>,
    pub ilink_eligible: Option<String>,
    pub clearport_eligible: Option<String>,
    pub unit_of_measure: Option<String>,
    pub globex_eligible: Option<String>,
    pub floor_eligible: Option<String>,
    pub variable_qty_flag: Option<String>,
    pub strategy_type: Option<String>,
    pub assignment_method: Option<String>,
    pub price_multiplier: Option<Decimal>,
    pub main_fraction: Option<i32>,
    pub unit_of_measure_qty: Option<Decimal>,
    pub globex_product_code: Option<String>,
    pub default_min_tick: Option<String>,
    pub reduced_tick_notes: Option<String>,
    pub min_qtrly_serial_tick: Option<String>,
    pub min_outright_tick: Option<String>,
    pub minimum_tick_note: Option<String>,
    pub min_clearport_tick: Option<String>,
    pub min_cabinet_tick_rules: Option<String>,
    pub minimum_half_tick: Option<String>,
    pub globex_min_tick: Option<String>,
    pub min_clearport_floor_tick: Option<String>,
    pub midcurve_tick_rules: Option<String>,
    pub calendar_tick_rules: Option<String>,
    pub floor_schedule: Option<String>,
    pub std_trading_hours: Option<String>,
    pub globex_schedule: Option<String>,
    pub clearport_schedule: Option<String>,
    pub tot_ltd: Option<String>,
    pub tot_midcurve: Option<String>,
    pub tot_quarterly: Option<String>,
    pub tot_serial: Option<String>,
    pub tot_clearport: Option<String>,
    pub tot_globex: Option<String>,
    pub tot_default: Option<String>,
    pub tot_floor: Option<String>,
    pub serial_listing_rules: Option<String>,
    pub regular_listing_rules: Option<String>,
    pub quarterly_listing_rules: Option<String>,
    pub floor_listing_rules: Option<String>,
    pub midcurve_options_rules: Option<String>,
    pub default_listing_rules: Option<String>,
    pub globex_listing_rules: Option<String>,
    pub last_delivery_rules: Option<String>,
    pub commodity_standards: Option<String>,
    pub settle_method: Option<String>,
    pub marker_stlmt_rules: Option<String>,
    pub limit_rules: Option<String>,
    pub days_or_hours: Option<String>,
    pub reportable_positions: Option<String>,
    pub price_quotation: Option<String>,
    pub settlement_procedure: Option<String>,
    pub exercise_style: Option<String>,
    pub settlement_at_expiration: Option<String>,
    pub strike_price_interval: Option<String>,
    pub mdp3_channel: Option<String>,
    pub globex_display_factor: Option<String>,
    pub var_cab_px_high: Option<String>,
    pub var_cab_px_low: Option<String>,
    pub clearing_cab_px: Option<String>,
    pub globex_cab_px: Option<String>,
    pub is_synthetic_product: Option<String>,
    pub itm_otm: Option<String>,
    pub contrary_instructions_allowed: Option<String>,
    pub settle_using_fixing_px: Option<String>,
    pub settlement_type: Option<String>,
    pub opt_style: Option<String>,
    pub trading_cut_off_time: Option<String>,
    pub is_taco_product: Option<String>,
    pub exercise_style_american_european: Option<String>,
    pub is_tmac_product: Option<String>,
    pub clearing_org_id: Option<String>,
    pub gc_basket_identifier: Option<String>,
    pub globex_group_descr: Option<String>,
    pub min_incremental_order: Option<String>,
    pub par_or_money: Option<String>,
    pub repo_year_days: Option<String>,
    pub subtype: Option<String>,
    pub valuation_method: Option<String>,
    pub contract_notional_amount: Option<Decimal>,
    pub rbt_eligible_ind: Option<String>,
    pub dirty_price_tick: Option<String>,
    pub dirty_price_rounding: Option<String>,
    pub min_days_to_mat: Option<String>,
    pub spread_pricing_convention: Option<String>,
    pub is_pm_eligible: Option<String>,
    pub fixing_time_zone: Option<String>,
    pub settlement_locale: Option<String>,
    pub trade_close_off_set: Option<String>,
    pub on_sef: Option<String>,
    pub price_precision: Option<String>,
    pub on_mtf: Option<String>,
    pub good_for_session: Option<String>,
    pub fixing_source: Option<String>,
    pub settl_ccy: Option<String>,
    pub is_efix_product: Option<String>,
    pub market_data: Option<String>,
    pub fixed_payout: Option<f64>,
    pub size_priority_qty: Option<String>,
    pub top_eligible: Option<String>,
    pub alt_globex_min_tick: Option<String>,
    pub alt_globex_tick_constraint: Option<String>,
    pub max_bid_ask_constraint: Option<String>,
    pub alt_min_quote_life: Option<String>,
    pub subfraction: Option<String>,
    pub url: Option<String>,
    pub category: Option<String>,
    pub sub_category: Option<String>,
}