use super::{
NnsGovernanceEconomicsReport, NnsGovernanceError, NnsGovernanceMaturityModulationReport,
NnsGovernanceMetricsReport, NnsGovernanceReportContext, NnsGovernanceRequest,
NnsGovernanceRewardEventReport, NnsGovernanceSource,
validation::{
validate_governance_metrics, validate_governance_request, validate_source_provenance,
},
};
#[cfg(feature = "nns-host")]
use crate::nns::LiveNnsSource;
#[cfg(feature = "nns-host")]
pub async fn build_nns_governance_economics_report(
request: &NnsGovernanceRequest,
) -> Result<NnsGovernanceEconomicsReport, NnsGovernanceError> {
build_nns_governance_economics_report_with_source(request, &LiveNnsSource::default()).await
}
pub async fn build_nns_governance_economics_report_with_source(
request: &NnsGovernanceRequest,
source: &dyn NnsGovernanceSource,
) -> Result<NnsGovernanceEconomicsReport, NnsGovernanceError> {
validate_governance_request(request)?;
let data = source.fetch_economics(request).await?;
validate_source_provenance(&request.source, &data.provenance)?;
Ok(NnsGovernanceEconomicsReport {
context: NnsGovernanceReportContext::from_source(request, data.provenance),
economics: data.value,
})
}
#[cfg(feature = "nns-host")]
pub async fn build_nns_governance_metrics_report(
request: &NnsGovernanceRequest,
) -> Result<NnsGovernanceMetricsReport, NnsGovernanceError> {
build_nns_governance_metrics_report_with_source(request, &LiveNnsSource::default()).await
}
pub async fn build_nns_governance_metrics_report_with_source(
request: &NnsGovernanceRequest,
source: &dyn NnsGovernanceSource,
) -> Result<NnsGovernanceMetricsReport, NnsGovernanceError> {
validate_governance_request(request)?;
let data = source.fetch_metrics(request).await?;
validate_source_provenance(&request.source, &data.provenance)?;
validate_governance_metrics(&data.value)?;
Ok(NnsGovernanceMetricsReport {
context: NnsGovernanceReportContext::from_source(request, data.provenance),
metrics: data.value,
})
}
#[cfg(feature = "nns-host")]
pub async fn build_nns_governance_reward_event_report(
request: &NnsGovernanceRequest,
) -> Result<NnsGovernanceRewardEventReport, NnsGovernanceError> {
build_nns_governance_reward_event_report_with_source(request, &LiveNnsSource::default()).await
}
pub async fn build_nns_governance_reward_event_report_with_source(
request: &NnsGovernanceRequest,
source: &dyn NnsGovernanceSource,
) -> Result<NnsGovernanceRewardEventReport, NnsGovernanceError> {
validate_governance_request(request)?;
let data = source.fetch_reward_event(request).await?;
validate_source_provenance(&request.source, &data.provenance)?;
Ok(NnsGovernanceRewardEventReport {
context: NnsGovernanceReportContext::from_source(request, data.provenance),
reward_event: data.value,
})
}
#[cfg(feature = "nns-host")]
pub async fn build_nns_governance_maturity_modulation_report(
request: &NnsGovernanceRequest,
) -> Result<NnsGovernanceMaturityModulationReport, NnsGovernanceError> {
build_nns_governance_maturity_modulation_report_with_source(request, &LiveNnsSource::default())
.await
}
pub async fn build_nns_governance_maturity_modulation_report_with_source(
request: &NnsGovernanceRequest,
source: &dyn NnsGovernanceSource,
) -> Result<NnsGovernanceMaturityModulationReport, NnsGovernanceError> {
validate_governance_request(request)?;
let data = source.fetch_maturity_modulation(request).await?;
validate_source_provenance(&request.source, &data.provenance)?;
Ok(NnsGovernanceMaturityModulationReport {
context: NnsGovernanceReportContext::from_source(request, data.provenance),
maturity_modulation: data.value,
})
}