use serde::{Deserialize, Serialize};

use rrt_runtime::state::CalendarPoint;

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct ExpectedRuntimeSummary {
    #[serde(default)]
    pub calendar: Option<CalendarPoint>,
    #[serde(default)]
    pub calendar_projection_source: Option<String>,
    #[serde(default)]
    pub calendar_projection_is_placeholder: Option<bool>,
    #[serde(default)]
    pub world_flag_count: Option<usize>,
    #[serde(default)]
    pub world_restore_selected_year_profile_lane: Option<u8>,
    #[serde(default)]
    pub world_restore_campaign_scenario_enabled: Option<bool>,
    #[serde(default)]
    pub world_restore_sandbox_enabled: Option<bool>,
    #[serde(default)]
    pub world_restore_seed_tuple_written_from_raw_lane: Option<bool>,
    #[serde(default)]
    pub world_restore_absolute_counter_requires_shell_context: Option<bool>,
    #[serde(default)]
    pub world_restore_absolute_counter_reconstructible_from_save: Option<bool>,
    #[serde(default)]
    pub world_restore_packed_year_word_raw_u16: Option<u16>,
    #[serde(default)]
    pub world_restore_partial_year_progress_raw_u8: Option<u8>,
    #[serde(default)]
    pub world_restore_current_calendar_tuple_word_raw_u32: Option<u32>,
    #[serde(default)]
    pub world_restore_current_calendar_tuple_word_2_raw_u32: Option<u32>,
    #[serde(default)]
    pub world_restore_absolute_counter_raw_u32: Option<u32>,
    #[serde(default)]
    pub world_restore_absolute_counter_mirror_raw_u32: Option<u32>,
    #[serde(default)]
    pub world_restore_disable_cargo_economy_special_condition_slot: Option<u8>,
    #[serde(default)]
    pub world_restore_disable_cargo_economy_special_condition_reconstructible_from_save:
        Option<bool>,
    #[serde(default)]
    pub world_restore_disable_cargo_economy_special_condition_write_side_grounded: Option<bool>,
    #[serde(default)]
    pub world_restore_disable_cargo_economy_special_condition_enabled: Option<bool>,
    #[serde(default)]
    pub world_restore_use_bio_accelerator_cars_enabled: Option<bool>,
    #[serde(default)]
    pub world_restore_use_wartime_cargos_enabled: Option<bool>,
    #[serde(default)]
    pub world_restore_disable_train_crashes_enabled: Option<bool>,
    #[serde(default)]
    pub world_restore_disable_train_crashes_and_breakdowns_enabled: Option<bool>,
    #[serde(default)]
    pub world_restore_ai_ignore_territories_at_startup_enabled: Option<bool>,
    #[serde(default)]
    pub world_restore_limited_track_building_amount: Option<i32>,
    #[serde(default)]
    pub world_restore_economic_status_code: Option<i32>,
    #[serde(default)]
    pub world_restore_territory_access_cost: Option<u32>,
    #[serde(default)]
    pub world_restore_issue_37_value: Option<u32>,
    #[serde(default)]
    pub world_restore_issue_38_value: Option<u32>,
    #[serde(default)]
    pub world_restore_issue_39_value: Option<u32>,
    #[serde(default)]
    pub world_restore_issue_3a_value: Option<u32>,
    #[serde(default)]
    pub world_restore_issue_37_multiplier_raw_u32: Option<u32>,
    #[serde(default)]
    pub world_restore_issue_37_multiplier_value_f32_text: Option<String>,
    #[serde(default)]
    pub world_restore_finance_neighborhood_count: Option<usize>,
    #[serde(default)]
    pub world_restore_finance_neighborhood_labels: Option<Vec<String>>,
    #[serde(default)]
    pub world_restore_economic_tuning_mirror_raw_u32: Option<u32>,
    #[serde(default)]
    pub world_restore_economic_tuning_mirror_value_f32_text: Option<String>,
    #[serde(default)]
    pub world_restore_economic_tuning_lane_count: Option<usize>,
    #[serde(default)]
    pub world_restore_economic_tuning_lane_value_f32_text: Option<Vec<String>>,
    #[serde(default)]
    pub world_restore_absolute_counter_restore_kind: Option<String>,
    #[serde(default)]
    pub world_restore_absolute_counter_adjustment_context: Option<String>,
    #[serde(default)]
    pub metadata_count: Option<usize>,
    #[serde(default)]
    pub company_count: Option<usize>,
    #[serde(default)]
    pub active_company_count: Option<usize>,
    #[serde(default)]
    pub company_market_state_owner_count: Option<usize>,
    #[serde(default)]
    pub selected_company_outstanding_shares: Option<u32>,
    #[serde(default)]
    pub selected_company_bond_count: Option<u8>,
    #[serde(default)]
    pub selected_company_largest_live_bond_principal: Option<u32>,
    #[serde(default)]
    pub selected_company_highest_coupon_live_bond_principal: Option<u32>,
    #[serde(default)]
    pub selected_company_assigned_share_pool: Option<u32>,
    #[serde(default)]
    pub selected_company_unassigned_share_pool: Option<u32>,
    #[serde(default)]
    pub selected_company_cached_share_price: Option<i64>,
    #[serde(default)]
    pub selected_company_cached_share_price_value_f32_text: Option<String>,
    #[serde(default)]
    pub selected_company_mutable_support_scalar_value_f32_text: Option<String>,
    #[serde(default)]
    pub selected_company_stat_band_root_0cfb_count: Option<usize>,
    #[serde(default)]
    pub selected_company_stat_band_root_0d7f_count: Option<usize>,
    #[serde(default)]
    pub selected_company_stat_band_root_1c47_count: Option<usize>,
    #[serde(default)]
    pub selected_company_last_dividend_year: Option<u32>,
    #[serde(default)]
    pub selected_company_years_since_founding: Option<u32>,
    #[serde(default)]
    pub selected_company_years_since_last_bankruptcy: Option<u32>,
    #[serde(default)]
    pub selected_company_years_since_last_dividend: Option<u32>,
    #[serde(default)]
    pub selected_company_current_partial_year_weight_numerator: Option<i64>,
    #[serde(default)]
    pub selected_company_current_issue_absolute_counter: Option<u32>,
    #[serde(default)]
    pub selected_company_prior_issue_absolute_counter: Option<u32>,
    #[serde(default)]
    pub selected_company_current_issue_age_absolute_counter_delta: Option<i64>,
    #[serde(default)]
    pub selected_company_chairman_bonus_year: Option<u32>,
    #[serde(default)]
    pub selected_company_chairman_bonus_amount: Option<i32>,
    #[serde(default)]
    pub player_count: Option<usize>,
    #[serde(default)]
    pub chairman_profile_count: Option<usize>,
    #[serde(default)]
    pub active_chairman_profile_count: Option<usize>,
    #[serde(default)]
    pub selected_chairman_profile_id: Option<u32>,
    #[serde(default)]
    pub linked_chairman_company_count: Option<usize>,
    #[serde(default)]
    pub company_takeover_cooldown_count: Option<usize>,
    #[serde(default)]
    pub company_merger_cooldown_count: Option<usize>,
    #[serde(default)]
    pub train_count: Option<usize>,
    #[serde(default)]
    pub active_train_count: Option<usize>,
    #[serde(default)]
    pub retired_train_count: Option<usize>,
    #[serde(default)]
    pub locomotive_catalog_count: Option<usize>,
    #[serde(default)]
    pub cargo_catalog_count: Option<usize>,
    #[serde(default)]
    pub territory_count: Option<usize>,
    #[serde(default)]
    pub company_territory_track_count: Option<usize>,
    #[serde(default)]
    pub packed_event_collection_present: Option<bool>,
    #[serde(default)]
    pub packed_event_record_count: Option<usize>,
    #[serde(default)]
    pub packed_event_decoded_record_count: Option<usize>,
    #[serde(default)]
    pub packed_event_imported_runtime_record_count: Option<usize>,
    #[serde(default)]
    pub packed_event_parity_only_record_count: Option<usize>,
    #[serde(default)]
    pub packed_event_unsupported_record_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_company_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_selection_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_company_role_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_player_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_player_selection_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_player_role_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_chairman_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_chairman_target_scope_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_condition_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_player_condition_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_company_condition_scope_disabled_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_player_condition_scope_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_territory_condition_scope_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_territory_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_named_territory_binding_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_unmapped_ordinary_condition_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_unmapped_world_condition_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_compact_control_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_shell_owned_descriptor_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_evidence_blocked_descriptor_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_variant_or_scope_blocked_descriptor_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_unmapped_real_descriptor_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_unmapped_world_descriptor_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_territory_access_variant_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_territory_access_scope_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_train_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_train_territory_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_missing_locomotive_catalog_context_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_confiscation_variant_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_retire_train_variant_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_retire_train_scope_count: Option<usize>,
    #[serde(default)]
    pub packed_event_blocked_structural_only_count: Option<usize>,
    #[serde(default)]
    pub event_runtime_record_count: Option<usize>,
    #[serde(default)]
    pub candidate_availability_count: Option<usize>,
    #[serde(default)]
    pub zero_candidate_availability_count: Option<usize>,
    #[serde(default)]
    pub named_locomotive_availability_count: Option<usize>,
    #[serde(default)]
    pub zero_named_locomotive_availability_count: Option<usize>,
    #[serde(default)]
    pub named_locomotive_cost_count: Option<usize>,
    #[serde(default)]
    pub cargo_production_override_count: Option<usize>,
    #[serde(default)]
    pub world_runtime_variable_count: Option<usize>,
    #[serde(default)]
    pub company_runtime_variable_owner_count: Option<usize>,
    #[serde(default)]
    pub player_runtime_variable_owner_count: Option<usize>,
    #[serde(default)]
    pub territory_runtime_variable_owner_count: Option<usize>,
    #[serde(default)]
    pub world_scalar_override_count: Option<usize>,
    #[serde(default)]
    pub special_condition_count: Option<usize>,
    #[serde(default)]
    pub enabled_special_condition_count: Option<usize>,
    #[serde(default)]
    pub save_profile_kind: Option<String>,
    #[serde(default)]
    pub save_profile_family: Option<String>,
    #[serde(default)]
    pub save_profile_map_path: Option<String>,
    #[serde(default)]
    pub save_profile_display_name: Option<String>,
    #[serde(default)]
    pub save_profile_selected_year_profile_lane: Option<u8>,
    #[serde(default)]
    pub save_profile_sandbox_enabled: Option<bool>,
    #[serde(default)]
    pub save_profile_campaign_scenario_enabled: Option<bool>,
    #[serde(default)]
    pub save_profile_staged_profile_copy_on_restore: Option<bool>,
    #[serde(default)]
    pub total_event_record_service_count: Option<u64>,
    #[serde(default)]
    pub periodic_boundary_call_count: Option<u64>,
    #[serde(default)]
    pub total_trigger_dispatch_count: Option<u64>,
    #[serde(default)]
    pub dirty_rerun_count: Option<u64>,
    #[serde(default)]
    pub total_company_cash: Option<i64>,
}
