Skip to main content

ic_query/sns/report/model/reports/neurons/detail/
mod.rs

1//! Exact neuron stake and principal-permission evidence.
2use serde::{Deserialize, Serialize};
3
4///
5/// SnsNeuronPermissionRow
6///
7/// Canonical principal and the native permission codes it holds on a neuron.
8///
9
10#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
11#[serde(deny_unknown_fields)]
12pub struct SnsNeuronPermissionRow {
13    /// Principal holding these permissions; not an eligibility verdict.
14    pub principal: String,
15    /// Native permission codes, retaining unknown codes.
16    pub permission_types: Vec<i32>,
17}
18
19///
20/// SnsNeuronDetailReport
21///
22/// Exact neuron identity, stake and permissions from an explicit Governance target.
23///
24
25#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
26pub struct SnsNeuronDetailReport {
27    /// Current report schema, always 1 before 1.0.
28    pub schema_version: u32,
29    /// Explicit target and acquisition evidence, flattened in JSON.
30    #[serde(flatten)]
31    pub context: crate::sns::SnsReportContext,
32    /// Requested 32-byte neuron id as lowercase hexadecimal text.
33    pub neuron_id: String,
34    /// Collection origin.
35    pub data_source: crate::report::ReportDataSource,
36    /// Raw stake, dissolve and permission evidence.
37    pub neuron: super::SnsNeuronRow,
38}
39
40/// Return the label for a native permission code, retaining unknown numeric codes separately.
41#[must_use]
42pub const fn sns_neuron_permission_name(code: i32) -> &'static str {
43    match code {
44        0 => "unspecified",
45        1 => "configure_dissolve_state",
46        2 => "manage_principals",
47        3 => "submit_proposal",
48        4 => "vote",
49        5 => "disburse",
50        6 => "split",
51        7 => "merge_maturity",
52        8 => "disburse_maturity",
53        9 => "stake_maturity",
54        10 => "manage_voting_permission",
55        _ => "unknown",
56    }
57}