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: preserves the complete native parameter response in JSON-friendly report fields.
6
7use ic_platform::candid::contract::{CandidType, serde::Deserialize};
8use serde::{Deserialize as SerdeDeserialize, Serialize};
9
10///
11/// SnsGovernanceParameters
12///
13/// Serializable complete SNS governance parameter set.
14///
15
16#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
17#[serde(deny_unknown_fields)]
18pub struct SnsGovernanceParameters {
19    /// Native default followee map when Governance supplied one.
20    pub default_followees: Option<SnsDefaultFollowees>,
21    pub max_dissolve_delay_seconds: Option<u64>,
22    pub max_dissolve_delay_bonus_percentage: Option<u64>,
23    pub max_followees_per_function: Option<u64>,
24    pub neuron_claimer_permissions: Option<SnsNeuronPermissionList>,
25    pub neuron_minimum_stake_e8s: Option<u64>,
26    pub max_neuron_age_for_age_bonus: Option<u64>,
27    pub initial_voting_period_seconds: Option<u64>,
28    pub neuron_minimum_dissolve_delay_to_vote_seconds: Option<u64>,
29    pub reject_cost_e8s: Option<u64>,
30    pub max_proposals_to_keep_per_action: Option<u32>,
31    pub wait_for_quiet_deadline_increase_seconds: Option<u64>,
32    pub max_number_of_neurons: Option<u64>,
33    pub transaction_fee_e8s: Option<u64>,
34    pub max_number_of_proposals_with_ballots: Option<u64>,
35    pub max_age_bonus_percentage: Option<u64>,
36    pub neuron_grantable_permissions: Option<SnsNeuronPermissionList>,
37    pub voting_rewards_parameters: Option<SnsVotingRewardsParameters>,
38    pub maturity_modulation_disabled: Option<bool>,
39    pub max_number_of_principals_per_neuron: Option<u64>,
40    pub automatically_advance_target_version: Option<bool>,
41    pub custom_proposal_criticality: Option<SnsCustomProposalCriticality>,
42}
43
44///
45/// SnsNeuronPermissionList
46///
47/// Serializable and Candid-compatible list of SNS neuron permission codes.
48///
49
50#[derive(Clone, Debug, Eq, PartialEq, CandidType, Deserialize, Serialize)]
51#[candid_path("ic_platform::candid::contract")]
52#[serde(deny_unknown_fields)]
53pub struct SnsNeuronPermissionList {
54    pub permissions: Vec<i32>,
55}
56
57///
58/// SnsDefaultFollowees
59///
60/// Complete native default-followee map projected into stable report rows.
61///
62
63#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
64#[serde(deny_unknown_fields)]
65pub struct SnsDefaultFollowees {
66    /// Function-keyed default followee entries in native response order.
67    pub followees: Vec<SnsDefaultFolloweesRow>,
68}
69
70///
71/// SnsDefaultFolloweesRow
72///
73/// Default neuron followees for one nervous-system function identifier.
74///
75
76#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
77#[serde(deny_unknown_fields)]
78pub struct SnsDefaultFolloweesRow {
79    /// Native nervous-system function identifier.
80    pub function_id: u64,
81    /// Full followee neuron identifiers as lowercase hexadecimal text.
82    pub followee_neuron_ids: Vec<String>,
83}
84
85///
86/// SnsVotingRewardsParameters
87///
88/// Serializable and Candid-compatible SNS voting reward parameter set.
89///
90
91#[derive(Clone, Debug, Eq, PartialEq, CandidType, Deserialize, Serialize)]
92#[candid_path("ic_platform::candid::contract")]
93#[serde(deny_unknown_fields)]
94pub struct SnsVotingRewardsParameters {
95    pub final_reward_rate_basis_points: Option<u64>,
96    pub initial_reward_rate_basis_points: Option<u64>,
97    pub reward_rate_transition_duration_seconds: Option<u64>,
98    pub round_duration_seconds: Option<u64>,
99}
100
101///
102/// SnsCustomProposalCriticality
103///
104/// Serializable and Candid-compatible SNS custom proposal criticality config.
105///
106
107#[derive(Clone, Debug, Eq, PartialEq, CandidType, Deserialize, Serialize)]
108#[candid_path("ic_platform::candid::contract")]
109#[serde(deny_unknown_fields)]
110pub struct SnsCustomProposalCriticality {
111    pub additional_critical_native_action_ids: Vec<u64>,
112}