use super::super::near_city_acquisition::NearCityAcquisitionTraceInputs;
use crate::inspect::smp::services::*;

pub(super) struct NearCityReportFields {
    pub(super) near_city_acquisition_region_input_fields: Vec<String>,
    pub(super) near_city_acquisition_peer_input_fields: Vec<String>,
    pub(super) near_city_acquisition_company_input_fields: Vec<String>,
    pub(super) near_city_acquisition_shellless_readiness_status: String,
    pub(super) near_city_acquisition_runtime_backed_input_families: Vec<String>,
    pub(super) near_city_acquisition_site_owner_company_projection_status: String,
    pub(super) near_city_acquisition_site_self_id_projection_status: String,
    pub(super) near_city_acquisition_site_cached_tri_lane_projection_status: String,
    pub(super) near_city_acquisition_tri_lane_live_service_status: String,
    pub(super) near_city_acquisition_candidate_subtype_projection_status: String,
    pub(super) near_city_acquisition_backing_record_projection_status: String,
    pub(super) near_city_acquisition_nontransport_persisted_source_status: String,
    pub(super) near_city_acquisition_nontransport_persisted_source_candidates: Vec<String>,
    pub(super) near_city_acquisition_tri_lane_save_shape_family_status: String,
    pub(super) near_city_acquisition_tri_lane_save_shape_family_candidates:
        Vec<SmpPeriodicTriLaneSaveShapeFamilyCandidateSummaryEntry>,
    pub(super) near_city_acquisition_tri_lane_live_owner_families: Vec<String>,
    pub(super) near_city_acquisition_tri_lane_candidate_gate_fields: Vec<String>,
    pub(super) near_city_acquisition_tri_lane_runtime_writer_roles: Vec<String>,
    pub(super) near_city_acquisition_tri_lane_direct_caller_families: Vec<String>,
    pub(super) near_city_acquisition_tri_lane_formula_input_lanes: Vec<String>,
    pub(super) near_city_acquisition_projection_hypotheses: Vec<SmpServiceConsumerHypothesis>,
    pub(super) near_city_acquisition_remaining_owner_gaps: Vec<String>,
    pub(super) near_city_acquisition_region_lane_statuses: Vec<String>,
}

pub(super) fn build_near_city_report_fields(
    inputs: &NearCityAcquisitionTraceInputs,
) -> NearCityReportFields {
    NearCityReportFields {
        near_city_acquisition_region_input_fields: inputs
            .near_city_acquisition_region_input_fields
            .clone(),
        near_city_acquisition_peer_input_fields: inputs
            .near_city_acquisition_peer_input_fields
            .clone(),
        near_city_acquisition_company_input_fields: inputs
            .near_city_acquisition_company_input_fields
            .clone(),
        near_city_acquisition_shellless_readiness_status: inputs
            .near_city_acquisition_shellless_readiness_status
            .clone(),
        near_city_acquisition_runtime_backed_input_families: inputs
            .near_city_acquisition_runtime_backed_input_families
            .clone(),
        near_city_acquisition_site_owner_company_projection_status: inputs
            .near_city_acquisition_site_owner_company_projection_status
            .clone(),
        near_city_acquisition_site_self_id_projection_status: inputs
            .near_city_acquisition_site_self_id_projection_status
            .clone(),
        near_city_acquisition_site_cached_tri_lane_projection_status: inputs
            .near_city_acquisition_site_cached_tri_lane_projection_status
            .clone(),
        near_city_acquisition_tri_lane_live_service_status: inputs
            .near_city_acquisition_tri_lane_live_service_status
            .clone(),
        near_city_acquisition_candidate_subtype_projection_status: inputs
            .near_city_acquisition_candidate_subtype_projection_status
            .clone(),
        near_city_acquisition_backing_record_projection_status: inputs
            .near_city_acquisition_backing_record_projection_status
            .clone(),
        near_city_acquisition_nontransport_persisted_source_status: inputs
            .near_city_acquisition_nontransport_persisted_source_status
            .clone(),
        near_city_acquisition_nontransport_persisted_source_candidates: inputs
            .near_city_acquisition_nontransport_persisted_source_candidates
            .clone(),
        near_city_acquisition_tri_lane_save_shape_family_status: inputs
            .near_city_acquisition_tri_lane_save_shape_family_status
            .clone(),
        near_city_acquisition_tri_lane_save_shape_family_candidates: inputs
            .near_city_acquisition_tri_lane_save_shape_family_candidates
            .clone(),
        near_city_acquisition_tri_lane_live_owner_families: inputs
            .near_city_acquisition_tri_lane_live_owner_families
            .clone(),
        near_city_acquisition_tri_lane_candidate_gate_fields: inputs
            .near_city_acquisition_tri_lane_candidate_gate_fields
            .clone(),
        near_city_acquisition_tri_lane_runtime_writer_roles: inputs
            .near_city_acquisition_tri_lane_runtime_writer_roles
            .clone(),
        near_city_acquisition_tri_lane_direct_caller_families: inputs
            .near_city_acquisition_tri_lane_direct_caller_families
            .clone(),
        near_city_acquisition_tri_lane_formula_input_lanes: inputs
            .near_city_acquisition_tri_lane_formula_input_lanes
            .clone(),
        near_city_acquisition_projection_hypotheses: inputs
            .near_city_acquisition_projection_hypotheses
            .clone(),
        near_city_acquisition_remaining_owner_gaps: inputs
            .near_city_acquisition_remaining_owner_gaps
            .clone(),
        near_city_acquisition_region_lane_statuses: inputs
            .near_city_acquisition_region_lane_statuses
            .clone(),
    }
}
