ic-query 0.100.0

Internet Computer query library for CloudEngine, NNS, SNS, ICRC, system canisters, and public network metadata
Documentation
//! Module: nns::proposals::report::wire
//!
//! Responsibility: Candid wire types for NNS governance proposal queries.
//! Does not own: live transport, report DTOs, or text rendering.
//! Boundary: models only the fields needed by NNS proposal reports.

use crate::nns::governance::{GovernanceProposalId, NnsGovernanceNeuronId};
use ic_platform::candid_codec::Reserved;
use serde::Deserialize;

///
/// NnsListProposalInfoRequest
///
/// Candid request for bounded NNS governance proposal listings.
///

#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]

pub(in crate::nns::proposals::report) struct NnsListProposalInfoRequest {
    pub(in crate::nns::proposals::report) include_reward_status: Vec<i32>,
    pub(in crate::nns::proposals::report) omit_large_fields: Option<bool>,
    pub(in crate::nns::proposals::report) before_proposal: Option<GovernanceProposalId>,
    pub(in crate::nns::proposals::report) limit: u32,
    pub(in crate::nns::proposals::report) exclude_topic: Vec<i32>,
    pub(in crate::nns::proposals::report) include_all_manage_neuron_proposals: Option<bool>,
    pub(in crate::nns::proposals::report) include_status: Vec<i32>,
    pub(in crate::nns::proposals::report) return_self_describing_action: Option<bool>,
}

ic_platform::candid_record!(NnsListProposalInfoRequest {
    591_667_337 => return_self_describing_action: Option<bool>,
    1_109_138_859 => include_reward_status: Vec<i32>,
    1_554_422_387 => omit_large_fields: Option<bool>,
    1_581_233_970 => before_proposal: Option<GovernanceProposalId>,
    1_963_007_803 => limit: u32,
    2_217_932_618 => exclude_topic: Vec<i32>,
    2_598_726_170 => include_all_manage_neuron_proposals: Option<bool>,
    3_931_738_025 => include_status: Vec<i32>
});

///
/// NnsListProposalInfoResponse
///
/// Candid response containing bounded NNS governance proposal rows.
///

#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]

pub(in crate::nns::proposals::report) struct NnsListProposalInfoResponse {
    pub(in crate::nns::proposals::report) proposal_info: Vec<NnsProposalInfo>,
}

ic_platform::candid_record!(NnsListProposalInfoResponse {
    3_720_987_355 => proposal_info: Vec<NnsProposalInfo>
});

///
/// NnsProposal
///
/// Candid NNS proposal content fields used in reports.
///

#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]

pub(in crate::nns::proposals::report) struct NnsProposal {
    pub(in crate::nns::proposals::report) url: String,
    pub(in crate::nns::proposals::report) title: Option<String>,
    pub(in crate::nns::proposals::report) action: Option<NnsProposalAction>,
    pub(in crate::nns::proposals::report) summary: String,
}

ic_platform::candid_record!(NnsProposal {
    5_843_823 => url: String,
    272_307_608 => title: Option<String>,
    373_701_558 => action: Option<NnsProposalAction>,
    2_162_756_390 => summary: String
});

///
/// NnsProposalAction
///
/// Label-only Candid NNS proposal action variant.
///

#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]

pub(in crate::nns::proposals::report) enum NnsProposalAction {
    RegisterKnownNeuron(Reserved),
    DeregisterKnownNeuron(Reserved),
    ManageNeuron(Reserved),
    UpdateCanisterSettings(Reserved),
    InstallCode(Reserved),
    StopOrStartCanister(Reserved),
    CreateServiceNervousSystem(Reserved),
    ExecuteNnsFunction(Reserved),
    RewardNodeProvider(Reserved),
    OpenSnsTokenSwap(Reserved),
    SetSnsTokenSwapOpenTimeWindow(Reserved),
    SetDefaultFollowees(Reserved),
    RewardNodeProviders(Reserved),
    ManageNetworkEconomics(Reserved),
    ApproveGenesisKyc(Reserved),
    AddOrRemoveNodeProvider(Reserved),
    Motion(Reserved),
    FulfillSubnetRentalRequest(Reserved),
    BlessAlternativeGuestOsVersion(Reserved),
    TakeCanisterSnapshot(Reserved),
    LoadCanisterSnapshot(Reserved),
    CreateCanisterAndInstallCode(Reserved),
}

ic_platform::candid_variant!(NnsProposalAction {
    599_266_195 => RegisterKnownNeuron(Reserved),
    919_927_150 => FulfillSubnetRentalRequest(Reserved),
    949_108_952 => ManageNeuron(Reserved),
    1_125_549_041 => LoadCanisterSnapshot(Reserved),
    1_138_099_982 => BlessAlternativeGuestOsVersion(Reserved),
    1_219_646_067 => UpdateCanisterSettings(Reserved),
    1_489_728_456 => InstallCode(Reserved),
    1_553_385_650 => DeregisterKnownNeuron(Reserved),
    1_784_656_914 => TakeCanisterSnapshot(Reserved),
    2_040_896_388 => StopOrStartCanister(Reserved),
    2_257_795_080 => CreateServiceNervousSystem(Reserved),
    2_746_863_190 => ExecuteNnsFunction(Reserved),
    3_018_890_004 => CreateCanisterAndInstallCode(Reserved),
    3_310_616_450 => RewardNodeProvider(Reserved),
    3_557_165_726 => OpenSnsTokenSwap(Reserved),
    3_565_501_725 => SetSnsTokenSwapOpenTimeWindow(Reserved),
    3_811_664_355 => SetDefaultFollowees(Reserved),
    3_828_060_849 => RewardNodeProviders(Reserved),
    3_837_127_925 => ManageNetworkEconomics(Reserved),
    4_002_900_730 => ApproveGenesisKyc(Reserved),
    4_009_414_235 => AddOrRemoveNodeProvider(Reserved),
    4_294_048_342 => Motion(Reserved)
});

impl NnsProposalAction {
    pub(in crate::nns::proposals::report) const fn as_str(&self) -> &'static str {
        match self {
            Self::RegisterKnownNeuron(_) => "register-known-neuron",
            Self::DeregisterKnownNeuron(_) => "deregister-known-neuron",
            Self::ManageNeuron(_) => "manage-neuron",
            Self::UpdateCanisterSettings(_) => "update-canister-settings",
            Self::InstallCode(_) => "install-code",
            Self::StopOrStartCanister(_) => "stop-or-start-canister",
            Self::CreateServiceNervousSystem(_) => "create-service-nervous-system",
            Self::ExecuteNnsFunction(_) => "execute-nns-function",
            Self::RewardNodeProvider(_) => "reward-node-provider",
            Self::OpenSnsTokenSwap(_) => "open-sns-token-swap",
            Self::SetSnsTokenSwapOpenTimeWindow(_) => "set-sns-token-swap-open-time-window",
            Self::SetDefaultFollowees(_) => "set-default-followees",
            Self::RewardNodeProviders(_) => "reward-node-providers",
            Self::ManageNetworkEconomics(_) => "manage-network-economics",
            Self::ApproveGenesisKyc(_) => "approve-genesis-kyc",
            Self::AddOrRemoveNodeProvider(_) => "add-or-remove-node-provider",
            Self::Motion(_) => "motion",
            Self::FulfillSubnetRentalRequest(_) => "fulfill-subnet-rental-request",
            Self::BlessAlternativeGuestOsVersion(_) => "bless-alternative-guest-os-version",
            Self::TakeCanisterSnapshot(_) => "take-canister-snapshot",
            Self::LoadCanisterSnapshot(_) => "load-canister-snapshot",
            Self::CreateCanisterAndInstallCode(_) => "create-canister-and-install-code",
        }
    }
}

///
/// NnsGovernanceBallot
///
/// Candid NNS governance ballot row.
///

#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]

pub(in crate::nns::proposals::report) struct NnsGovernanceBallot {
    pub(in crate::nns::proposals::report) vote: i32,
    pub(in crate::nns::proposals::report) voting_power: u64,
}

ic_platform::candid_record!(NnsGovernanceBallot {
    1_314_114_794 => vote: i32,
    3_871_395_629 => voting_power: u64
});

///
/// NnsProposalTallyWire
///
/// Candid NNS proposal vote tally.
///

#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]

pub(in crate::nns::proposals::report) struct NnsProposalTallyWire {
    pub(in crate::nns::proposals::report) no: u64,
    pub(in crate::nns::proposals::report) yes: u64,
    pub(in crate::nns::proposals::report) total: u64,
    pub(in crate::nns::proposals::report) timestamp_seconds: u64,
}

ic_platform::candid_record!(NnsProposalTallyWire {
    24_641 => no: u64,
    6_039_847 => yes: u64,
    338_842_564 => total: u64,
    4_174_818_006 => timestamp_seconds: u64
});

///
/// NnsProposalInfo
///
/// Candid NNS governance proposal row returned by governance.
///

#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]

pub(in crate::nns::proposals::report) struct NnsProposalInfo {
    pub(in crate::nns::proposals::report) id: Option<GovernanceProposalId>,
    pub(in crate::nns::proposals::report) status: i32,
    pub(in crate::nns::proposals::report) topic: i32,
    pub(in crate::nns::proposals::report) ballots: Vec<(u64, NnsGovernanceBallot)>,
    pub(in crate::nns::proposals::report) proposal_timestamp_seconds: u64,
    pub(in crate::nns::proposals::report) reward_event_round: u64,
    pub(in crate::nns::proposals::report) deadline_timestamp_seconds: Option<u64>,
    pub(in crate::nns::proposals::report) failed_timestamp_seconds: u64,
    pub(in crate::nns::proposals::report) reject_cost_e8s: u64,
    pub(in crate::nns::proposals::report) latest_tally: Option<NnsProposalTallyWire>,
    pub(in crate::nns::proposals::report) reward_status: i32,
    pub(in crate::nns::proposals::report) decided_timestamp_seconds: u64,
    pub(in crate::nns::proposals::report) proposal: Option<NnsProposal>,
    pub(in crate::nns::proposals::report) proposer: Option<NnsGovernanceNeuronId>,
    pub(in crate::nns::proposals::report) executed_timestamp_seconds: u64,
    pub(in crate::nns::proposals::report) total_potential_voting_power: Option<u64>,
}

ic_platform::candid_record!(NnsProposalInfo {
    23_515 => id: Option<GovernanceProposalId>,
    100_394_802 => status: i32,
    338_645_423 => topic: i32,
    718_522_127 => ballots: Vec<(u64, NnsGovernanceBallot)>,
    1_120_297_033 => proposal_timestamp_seconds: u64,
    1_138_543_385 => reward_event_round: u64,
    1_380_048_431 => deadline_timestamp_seconds: Option<u64>,
    1_453_869_204 => failed_timestamp_seconds: u64,
    1_659_864_270 => reject_cost_e8s: u64,
    2_084_260_468 => latest_tally: Option<NnsProposalTallyWire>,
    2_102_687_177 => total_potential_voting_power: Option<u64>,
    2_139_208_002 => reward_status: i32,
    2_756_235_859 => decided_timestamp_seconds: u64,
    3_000_310_834 => proposal: Option<NnsProposal>,
    3_000_311_732 => proposer: Option<NnsGovernanceNeuronId>,
    4_133_454_822 => executed_timestamp_seconds: u64
});