use super::NnsGovernanceReportContext;
#[cfg(feature = "host")]
use candid::CandidType;
use serde::{Deserialize as SerdeDeserialize, Serialize};
#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
pub struct NnsGovernanceEconomicsReport {
#[serde(flatten)]
pub context: NnsGovernanceReportContext,
pub economics: NnsGovernanceEconomics,
}
#[cfg_attr(feature = "host", derive(CandidType))]
#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
pub struct NnsGovernanceEconomics {
pub neuron_minimum_stake_e8s: u64,
pub max_proposals_to_keep_per_topic: u32,
pub neuron_management_fee_per_proposal_e8s: u64,
pub reject_cost_e8s: u64,
pub transaction_fee_e8s: u64,
pub neuron_spawn_dissolve_delay_seconds: u64,
pub minimum_icp_xdr_rate: u64,
pub maximum_node_provider_rewards_e8s: u64,
pub neurons_fund_economics: Option<NnsNeuronsFundEconomics>,
pub voting_power_economics: Option<NnsVotingPowerEconomics>,
}
#[cfg_attr(feature = "host", derive(CandidType))]
#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
pub struct NnsNeuronsFundEconomics {
pub maximum_icp_xdr_rate: Option<NnsGovernancePercentage>,
pub neurons_fund_matched_funding_curve_coefficients:
Option<NnsNeuronsFundMatchedFundingCurveCoefficients>,
pub max_theoretical_neurons_fund_participation_amount_xdr: Option<NnsGovernanceDecimal>,
pub minimum_icp_xdr_rate: Option<NnsGovernancePercentage>,
}
#[cfg_attr(feature = "host", derive(CandidType))]
#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
pub struct NnsNeuronsFundMatchedFundingCurveCoefficients {
pub contribution_threshold_xdr: Option<NnsGovernanceDecimal>,
pub one_third_participation_milestone_xdr: Option<NnsGovernanceDecimal>,
pub full_participation_milestone_xdr: Option<NnsGovernanceDecimal>,
}
#[cfg_attr(feature = "host", derive(CandidType))]
#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
pub struct NnsGovernancePercentage {
pub basis_points: Option<u64>,
}
#[cfg_attr(feature = "host", derive(CandidType))]
#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
pub struct NnsGovernanceDecimal {
pub human_readable: Option<String>,
}
#[cfg_attr(feature = "host", derive(CandidType))]
#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
pub struct NnsVotingPowerEconomics {
pub start_reducing_voting_power_after_seconds: Option<u64>,
pub clear_following_after_seconds: Option<u64>,
pub neuron_minimum_dissolve_delay_to_vote_seconds: Option<u64>,
}