use super::selection::{
NnsProposalListSort, NnsProposalRewardStatusFilter, NnsProposalStatusFilter,
NnsProposalTopicFilter,
};
use crate::nns::governance::NnsGovernanceRequest;
use crate::report::SortDirection;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct NnsProposalListRequest {
pub governance: NnsGovernanceRequest,
pub limit: u32,
pub before_proposal_id: Option<u64>,
pub status: NnsProposalStatusFilter,
pub reward_status: NnsProposalRewardStatusFilter,
pub topic: NnsProposalTopicFilter,
pub proposer_neuron_id: Option<u64>,
pub query: Option<String>,
pub sort: NnsProposalListSort,
pub sort_direction: SortDirection,
}
impl NnsProposalListRequest {
#[must_use]
pub fn new(governance: NnsGovernanceRequest, limit: u32) -> Self {
Self {
governance,
limit,
before_proposal_id: None,
status: NnsProposalStatusFilter::default(),
reward_status: NnsProposalRewardStatusFilter::default(),
topic: NnsProposalTopicFilter::default(),
proposer_neuron_id: None,
query: None,
sort: NnsProposalListSort::default(),
sort_direction: SortDirection::default(),
}
}
#[must_use]
pub const fn with_sort(mut self, sort: NnsProposalListSort) -> Self {
self.sort = sort;
self.sort_direction = sort.default_direction();
self
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct NnsProposalRequest {
pub governance: NnsGovernanceRequest,
pub proposal_id: u64,
}
impl NnsProposalRequest {
#[must_use]
pub const fn new(governance: NnsGovernanceRequest, proposal_id: u64) -> Self {
Self {
governance,
proposal_id,
}
}
}