mod economics;
mod events;
mod metrics;
use super::{NnsGovernanceReportContext, NnsGovernanceSourceProvenance};
use crate::text_value::sanitize_text;
pub use economics::nns_governance_economics_report_text;
pub use events::{
nns_governance_maturity_modulation_report_text, nns_governance_reward_event_report_text,
};
pub use metrics::nns_governance_metrics_report_text;
pub fn context_lines(context: &NnsGovernanceReportContext) -> Vec<String> {
let mut lines = vec![
format!("network: {}", sanitize_text(&context.network)),
format!("governance_canister_id: {}", context.governance_canister_id),
format!("fetched_at: {}", sanitize_text(&context.fetched_at)),
];
lines.extend(source_lines(&context.source));
lines
}
pub fn source_lines(source: &NnsGovernanceSourceProvenance) -> Vec<String> {
let mut lines = Vec::new();
match source {
NnsGovernanceSourceProvenance::ReplicaQuery {
endpoint,
fetched_by,
} => {
lines.push("source_transport: replica_query".to_string());
lines.push(format!("source_endpoint: {}", sanitize_text(endpoint)));
lines.push(format!("fetched_by: {}", sanitize_text(fetched_by)));
}
NnsGovernanceSourceProvenance::ReplicatedInterCanisterCall {
collector_canister_id,
} => {
lines.push("source_transport: replicated_inter_canister_call".to_string());
lines.push(format!("collector_canister_id: {collector_canister_id}"));
}
}
lines.push(format!(
"execution_assurance: {}",
source.execution_assurance().as_str()
));
lines
}