use crate::sns::report::{
MainnetSns, MainnetSnsList, MainnetSnsNeuronPage, MainnetSnsNeurons, MainnetSnsProposal,
MainnetSnsProposalPage, MainnetSnsProposals, MainnetSnsToken, SnsFetchRequest,
SnsGovernanceParameters, SnsHostError, SnsNeuronId, SnsProposalTopicFilter,
};
pub(in crate::sns::report) trait SnsListSource {
fn fetch_deployed_snses(
&self,
request: &SnsFetchRequest,
) -> Result<MainnetSnsList, SnsHostError>;
}
pub(in crate::sns::report) trait SnsNeuronsSource: SnsListSource {
fn fetch_sns_neurons(
&self,
request: &SnsFetchRequest,
sns: &MainnetSns,
limit: u32,
owner_principal_id: Option<&str>,
) -> Result<MainnetSnsNeurons, SnsHostError>;
fn fetch_sns_neuron_page(
&self,
request: &SnsFetchRequest,
sns: &MainnetSns,
limit: u32,
start_page_at: Option<&SnsNeuronId>,
owner_principal_id: Option<&str>,
) -> Result<MainnetSnsNeuronPage, SnsHostError>;
}
pub(in crate::sns::report) trait SnsParamsSource: SnsListSource {
fn fetch_sns_params(
&self,
request: &SnsFetchRequest,
sns: &MainnetSns,
) -> Result<SnsGovernanceParameters, SnsHostError>;
}
pub(in crate::sns::report) trait SnsProposalSource: SnsListSource {
fn fetch_sns_proposal(
&self,
request: &SnsFetchRequest,
sns: &MainnetSns,
proposal_id: u64,
) -> Result<MainnetSnsProposal, SnsHostError>;
}
pub(in crate::sns::report) trait SnsProposalsSource: SnsListSource {
fn fetch_sns_proposals(
&self,
request: &SnsFetchRequest,
sns: &MainnetSns,
limit: u32,
before_proposal_id: Option<u64>,
include_status: &[i32],
topic: SnsProposalTopicFilter,
) -> Result<MainnetSnsProposals, SnsHostError>;
fn fetch_sns_proposal_page(
&self,
request: &SnsFetchRequest,
sns: &MainnetSns,
limit: u32,
before_proposal_id: Option<u64>,
) -> Result<MainnetSnsProposalPage, SnsHostError>;
}
pub(in crate::sns::report) trait SnsTokenSource: SnsListSource {
fn fetch_sns_token(
&self,
request: &SnsFetchRequest,
sns: &MainnetSns,
) -> Result<MainnetSnsToken, SnsHostError>;
}