use super::near_city_acquisition::NearCityAcquisitionTraceInputs;
use super::peer_site::PeerSiteTraceInputs;

mod acquisition_frontier;
mod linked_transit_reference;
mod linked_transit_runtime;
mod save_side_payload;

pub(super) struct LinkedTransitTraceInputs {
    pub(super) atlas_candidate_consumers: Vec<String>,
    pub(super) known_bridge_helpers: Vec<String>,
    pub(super) next_owner_questions: Vec<String>,
    pub(super) linked_transit_shellless_readiness_status: String,
    pub(super) linked_transit_minimum_persisted_identity_inputs: Vec<String>,
    pub(super) linked_transit_live_rebuilt_cache_lanes: Vec<String>,
    pub(super) linked_transit_runtime_backed_input_families: Vec<String>,
    pub(super) linked_transit_remaining_owner_gaps: Vec<String>,
}

pub(super) fn build_linked_transit_trace_inputs() -> LinkedTransitTraceInputs {
    linked_transit_reference::build_linked_transit_trace_inputs()
}

pub(super) fn build_periodic_company_service_notes(
    peer_site: &PeerSiteTraceInputs,
    near_city: &NearCityAcquisitionTraceInputs,
) -> Vec<String> {
    let mut notes = Vec::new();
    acquisition_frontier::push_acquisition_frontier_notes(&mut notes, near_city);
    save_side_payload::push_save_side_payload_notes(&mut notes, peer_site);
    linked_transit_runtime::push_linked_transit_runtime_notes(&mut notes);
    notes
}
