Skip to main content

nea_esi/types/
misc.rs

1use crate::Isk;
2use chrono::{DateTime, NaiveDate, Utc};
3use serde::{Deserialize, Serialize};
4
5/// A single item in a character's asset list.
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct EsiAssetItem {
8    pub item_id: i64,
9    pub type_id: i32,
10    pub location_id: i64,
11    pub location_type: String,
12    pub location_flag: String,
13    pub quantity: i32,
14    #[serde(default)]
15    pub is_singleton: bool,
16    #[serde(default)]
17    pub is_blueprint_copy: Option<bool>,
18}
19
20/// A single wallet journal entry.
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct EsiWalletJournalEntry {
23    pub id: i64,
24    pub date: DateTime<Utc>,
25    pub ref_type: String,
26    #[serde(default)]
27    pub amount: Option<Isk>,
28    #[serde(default)]
29    pub balance: Option<Isk>,
30    #[serde(default)]
31    pub description: Option<String>,
32    #[serde(default)]
33    pub first_party_id: Option<i64>,
34    #[serde(default)]
35    pub second_party_id: Option<i64>,
36    #[serde(default)]
37    pub reason: Option<String>,
38    #[serde(default)]
39    pub context_id: Option<i64>,
40    #[serde(default)]
41    pub context_id_type: Option<String>,
42    #[serde(default)]
43    pub tax: Option<Isk>,
44    #[serde(default)]
45    pub tax_receiver_id: Option<i64>,
46}
47
48/// A single wallet transaction.
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct EsiWalletTransaction {
51    pub transaction_id: i64,
52    pub date: DateTime<Utc>,
53    pub type_id: i32,
54    pub location_id: i64,
55    pub unit_price: Isk,
56    pub quantity: i32,
57    pub client_id: i64,
58    pub is_buy: bool,
59    pub is_personal: bool,
60    pub journal_ref_id: i64,
61}
62
63/// LP balance with a corporation.
64#[derive(Debug, Clone, Serialize, Deserialize)]
65pub struct EsiLoyaltyPoints {
66    pub corporation_id: i64,
67    pub loyalty_points: i32,
68}
69
70/// An LP store offer.
71#[derive(Debug, Clone, Serialize, Deserialize)]
72pub struct EsiLoyaltyStoreOffer {
73    pub offer_id: i32,
74    pub type_id: i32,
75    pub quantity: i32,
76    pub lp_cost: i32,
77    pub isk_cost: i64,
78    #[serde(default)]
79    pub ak_cost: Option<i32>,
80    #[serde(default)]
81    pub required_items: Vec<EsiLoyaltyRequiredItem>,
82}
83
84/// A required item for an LP store offer.
85#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct EsiLoyaltyRequiredItem {
87    pub type_id: i32,
88    pub quantity: i32,
89}
90
91/// A planetary colony summary.
92#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct EsiPlanetSummary {
94    pub solar_system_id: i32,
95    pub planet_id: i32,
96    pub planet_type: String,
97    pub num_pins: i32,
98    pub last_update: DateTime<Utc>,
99    pub upgrade_level: i32,
100    #[serde(default)]
101    pub owner_id: Option<i64>,
102}
103
104/// Detailed planetary colony layout. Uses `serde_json::Value` for complex
105/// nested PI structures; typed access is deferred to a future release.
106#[derive(Debug, Clone, Serialize, Deserialize)]
107pub struct EsiPlanetDetail {
108    #[serde(default)]
109    pub links: Vec<serde_json::Value>,
110    #[serde(default)]
111    pub pins: Vec<serde_json::Value>,
112    #[serde(default)]
113    pub routes: Vec<serde_json::Value>,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
117pub struct EsiDogmaAttribute {
118    pub attribute_id: i32,
119    pub name: String,
120    pub published: bool,
121    #[serde(default)]
122    pub description: Option<String>,
123    #[serde(default)]
124    pub icon_id: Option<i32>,
125    #[serde(default)]
126    pub default_value: f64,
127    #[serde(default)]
128    pub display_name: Option<String>,
129    #[serde(default)]
130    pub unit_id: Option<i32>,
131    #[serde(default)]
132    pub stackable: bool,
133    #[serde(default)]
134    pub high_is_good: bool,
135}
136
137#[derive(Debug, Clone, Serialize, Deserialize)]
138#[allow(clippy::struct_excessive_bools)]
139pub struct EsiDogmaEffect {
140    pub effect_id: i32,
141    pub name: String,
142    pub published: bool,
143    #[serde(default)]
144    pub description: Option<String>,
145    #[serde(default)]
146    pub icon_id: Option<i32>,
147    #[serde(default)]
148    pub display_name: Option<String>,
149    #[serde(default)]
150    pub effect_category: Option<i32>,
151    #[serde(default)]
152    pub is_assistance: bool,
153    #[serde(default)]
154    pub is_offensive: bool,
155    #[serde(default)]
156    pub is_warp_safe: bool,
157    #[serde(default)]
158    pub pre_expression: Option<i32>,
159    #[serde(default)]
160    pub post_expression: Option<i32>,
161    #[serde(default)]
162    pub duration_attribute_id: Option<i32>,
163    #[serde(default)]
164    pub tracking_speed_attribute_id: Option<i32>,
165    #[serde(default)]
166    pub discharge_attribute_id: Option<i32>,
167    #[serde(default)]
168    pub range_attribute_id: Option<i32>,
169    #[serde(default)]
170    pub falloff_attribute_id: Option<i32>,
171    #[serde(default)]
172    pub modifiers: Vec<EsiDogmaModifier>,
173}
174
175#[derive(Debug, Clone, Serialize, Deserialize)]
176pub struct EsiDogmaModifier {
177    #[serde(default)]
178    pub domain: Option<String>,
179    #[serde(default)]
180    pub effect_id: Option<i32>,
181    #[serde(default)]
182    pub func: Option<String>,
183    #[serde(default)]
184    pub modified_attribute_id: Option<i32>,
185    #[serde(default)]
186    pub modifying_attribute_id: Option<i32>,
187    #[serde(default)]
188    pub operator: Option<i32>,
189}
190
191#[derive(Debug, Clone, Serialize, Deserialize)]
192pub struct EsiDynamicItem {
193    pub created_by: i64,
194    pub mutator_type_id: i32,
195    pub source_type_id: i32,
196    #[serde(default)]
197    pub dogma_attributes: Vec<EsiDogmaAttributeValue>,
198    #[serde(default)]
199    pub dogma_effects: Vec<EsiDogmaEffectRef>,
200}
201
202#[derive(Debug, Clone, Serialize, Deserialize)]
203pub struct EsiDogmaAttributeValue {
204    pub attribute_id: i32,
205    pub value: f64,
206}
207
208#[derive(Debug, Clone, Serialize, Deserialize)]
209pub struct EsiDogmaEffectRef {
210    pub effect_id: i32,
211    pub is_default: bool,
212}
213
214#[derive(Debug, Clone, Serialize, Deserialize)]
215pub struct EsiWar {
216    pub id: i32,
217    pub declared: DateTime<Utc>,
218    pub mutual: bool,
219    pub open_for_allies: bool,
220    pub aggressor: EsiWarParty,
221    pub defender: EsiWarParty,
222    #[serde(default)]
223    pub started: Option<DateTime<Utc>>,
224    #[serde(default)]
225    pub finished: Option<DateTime<Utc>>,
226    #[serde(default)]
227    pub retracted: Option<DateTime<Utc>>,
228    #[serde(default)]
229    pub allies: Vec<EsiWarAlly>,
230}
231
232#[derive(Debug, Clone, Serialize, Deserialize)]
233pub struct EsiWarParty {
234    pub isk_destroyed: Isk,
235    pub ships_killed: i32,
236    #[serde(default)]
237    pub alliance_id: Option<i64>,
238    #[serde(default)]
239    pub corporation_id: Option<i64>,
240}
241
242#[derive(Debug, Clone, Serialize, Deserialize)]
243pub struct EsiWarAlly {
244    #[serde(default)]
245    pub alliance_id: Option<i64>,
246    #[serde(default)]
247    pub corporation_id: Option<i64>,
248}
249
250#[derive(Debug, Clone, Serialize, Deserialize)]
251pub struct EsiFwFactionStats {
252    pub faction_id: i32,
253    pub pilots: i32,
254    pub systems_controlled: i32,
255    pub kills: EsiFwTotals,
256    pub victory_points: EsiFwTotals,
257}
258
259#[derive(Debug, Clone, Serialize, Deserialize)]
260pub struct EsiFwTotals {
261    pub last_week: i32,
262    pub total: i32,
263    pub yesterday: i32,
264}
265
266#[derive(Debug, Clone, Serialize, Deserialize)]
267pub struct EsiFwSystem {
268    pub solar_system_id: i32,
269    pub contested: String,
270    pub occupier_faction_id: i32,
271    pub owner_faction_id: i32,
272    pub victory_points: i32,
273    pub victory_points_threshold: i32,
274}
275
276#[derive(Debug, Clone, Serialize, Deserialize)]
277pub struct EsiFwLeaderboards {
278    pub kills: EsiFwLeaderboardCategory,
279    pub victory_points: EsiFwLeaderboardCategory,
280}
281
282#[derive(Debug, Clone, Serialize, Deserialize)]
283pub struct EsiFwLeaderboardCategory {
284    #[serde(default)]
285    pub active_total: Vec<EsiFwLeaderboardEntry>,
286    #[serde(default)]
287    pub last_week: Vec<EsiFwLeaderboardEntry>,
288    #[serde(default)]
289    pub yesterday: Vec<EsiFwLeaderboardEntry>,
290}
291
292#[derive(Debug, Clone, Serialize, Deserialize)]
293pub struct EsiFwLeaderboardEntry {
294    pub amount: i32,
295    pub id: i32,
296}
297
298#[derive(Debug, Clone, Serialize, Deserialize)]
299pub struct EsiFwWar {
300    pub against_id: i32,
301    pub faction_id: i32,
302}
303
304#[derive(Debug, Clone, Serialize, Deserialize)]
305pub struct EsiInsurancePrice {
306    pub type_id: i32,
307    #[serde(default)]
308    pub levels: Vec<EsiInsuranceLevel>,
309}
310
311#[derive(Debug, Clone, Serialize, Deserialize)]
312pub struct EsiInsuranceLevel {
313    pub cost: Isk,
314    pub name: String,
315    pub payout: Isk,
316}
317
318/// A personal mining ledger entry.
319#[derive(Debug, Clone, Serialize, Deserialize)]
320pub struct EsiMiningEntry {
321    pub date: NaiveDate,
322    pub solar_system_id: i32,
323    pub type_id: i32,
324    pub quantity: i64,
325}
326
327/// Character FW leaderboards.
328#[derive(Debug, Clone, Serialize, Deserialize)]
329pub struct EsiFwCharacterLeaderboards {
330    pub kills: EsiFwLeaderboardCategory,
331    pub victory_points: EsiFwLeaderboardCategory,
332}
333
334/// Corporation FW leaderboards.
335#[derive(Debug, Clone, Serialize, Deserialize)]
336pub struct EsiFwCorporationLeaderboards {
337    pub kills: EsiFwLeaderboardCategory,
338    pub victory_points: EsiFwLeaderboardCategory,
339}