Skip to main content

ic_query/sns/report/model/reports/
governance.rs

1//! Module: sns::report::model::reports::governance
2//!
3//! Responsibility: SNS governance parameter DTOs shared by reports.
4//! Does not own: live governance fetches, parameter rendering, or defaults.
5//! Boundary: mirrors Candid-compatible governance parameter fields.
6
7use candid::{CandidType, Deserialize};
8use serde::Serialize;
9
10///
11/// SnsGovernanceParameters
12///
13/// Serializable and Candid-compatible SNS governance parameter set.
14///
15
16#[derive(Clone, Debug, Eq, PartialEq, CandidType, Deserialize, Serialize)]
17pub struct SnsGovernanceParameters {
18    pub max_dissolve_delay_seconds: Option<u64>,
19    pub max_dissolve_delay_bonus_percentage: Option<u64>,
20    pub max_followees_per_function: Option<u64>,
21    pub neuron_claimer_permissions: Option<SnsNeuronPermissionList>,
22    pub neuron_minimum_stake_e8s: Option<u64>,
23    pub max_neuron_age_for_age_bonus: Option<u64>,
24    pub initial_voting_period_seconds: Option<u64>,
25    pub neuron_minimum_dissolve_delay_to_vote_seconds: Option<u64>,
26    pub reject_cost_e8s: Option<u64>,
27    pub max_proposals_to_keep_per_action: Option<u32>,
28    pub wait_for_quiet_deadline_increase_seconds: Option<u64>,
29    pub max_number_of_neurons: Option<u64>,
30    pub transaction_fee_e8s: Option<u64>,
31    pub max_number_of_proposals_with_ballots: Option<u64>,
32    pub max_age_bonus_percentage: Option<u64>,
33    pub neuron_grantable_permissions: Option<SnsNeuronPermissionList>,
34    pub voting_rewards_parameters: Option<SnsVotingRewardsParameters>,
35    pub maturity_modulation_disabled: Option<bool>,
36    pub max_number_of_principals_per_neuron: Option<u64>,
37    pub automatically_advance_target_version: Option<bool>,
38    pub custom_proposal_criticality: Option<SnsCustomProposalCriticality>,
39}
40
41///
42/// SnsNeuronPermissionList
43///
44/// Serializable and Candid-compatible list of SNS neuron permission codes.
45///
46
47#[derive(Clone, Debug, Eq, PartialEq, CandidType, Deserialize, Serialize)]
48pub struct SnsNeuronPermissionList {
49    pub permissions: Vec<i32>,
50}
51
52///
53/// SnsVotingRewardsParameters
54///
55/// Serializable and Candid-compatible SNS voting reward parameter set.
56///
57
58#[derive(Clone, Debug, Eq, PartialEq, CandidType, Deserialize, Serialize)]
59pub struct SnsVotingRewardsParameters {
60    pub final_reward_rate_basis_points: Option<u64>,
61    pub initial_reward_rate_basis_points: Option<u64>,
62    pub reward_rate_transition_duration_seconds: Option<u64>,
63    pub round_duration_seconds: Option<u64>,
64}
65
66///
67/// SnsCustomProposalCriticality
68///
69/// Serializable and Candid-compatible SNS custom proposal criticality config.
70///
71
72#[derive(Clone, Debug, Eq, PartialEq, CandidType, Deserialize, Serialize)]
73pub struct SnsCustomProposalCriticality {
74    pub additional_critical_native_action_ids: Vec<u64>,
75}