use serde::{Deserialize as SerdeDeserialize, Serialize};
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct SnsNeuronsReport {
pub schema_version: u32,
pub network: String,
pub sns_wasm_canister_id: String,
pub fetched_at: String,
pub source_endpoint: String,
pub fetched_by: String,
pub id: usize,
pub name: String,
pub root_canister_id: String,
pub governance_canister_id: String,
pub requested_limit: u32,
pub owner_principal_id: Option<String>,
pub verbose: bool,
pub data_source: String,
pub sort: String,
pub cache_path: Option<String>,
pub cache_complete: Option<bool>,
pub total_neuron_count: usize,
pub neuron_count: usize,
pub neurons: Vec<SnsNeuronRow>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct SnsNeuronsRefreshReport {
pub schema_version: u32,
pub network: String,
pub sns_wasm_canister_id: String,
pub fetched_at: String,
pub source_endpoint: String,
pub fetched_by: String,
pub id: usize,
pub name: String,
pub root_canister_id: String,
pub governance_canister_id: String,
pub cache_path: String,
pub refresh_lock_path: String,
pub refresh_attempt_path: String,
pub page_size: u32,
pub page_count: u32,
pub neuron_count: usize,
pub complete: bool,
pub replaced_existing_cache: bool,
pub wrote_cache: bool,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct SnsNeuronsCacheListReport {
pub schema_version: u32,
pub network: String,
pub cache_root: String,
pub cache_count: usize,
pub caches: Vec<SnsNeuronsCacheSummary>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct SnsNeuronsCacheStatusReport {
pub schema_version: u32,
pub network: String,
pub cache_root: String,
pub input: String,
pub found: bool,
pub cache: Option<SnsNeuronsCacheSummary>,
pub expected_cache_path: Option<String>,
pub refresh_attempt_path: Option<String>,
pub latest_attempt: Option<SnsNeuronsRefreshAttemptStatus>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct SnsNeuronsCacheSummary {
pub id: usize,
pub name: String,
pub root_canister_id: String,
pub governance_canister_id: String,
pub complete: bool,
pub row_count: usize,
pub page_count: u32,
pub page_size: u32,
pub fetched_at: String,
pub source_endpoint: String,
pub cache_path: String,
pub refresh_attempt_path: String,
pub latest_attempt: Option<SnsNeuronsRefreshAttemptStatus>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct SnsNeuronsRefreshAttemptStatus {
pub status: String,
pub started_at: String,
pub updated_at: String,
pub page_size: u32,
pub pages_fetched: u32,
pub rows_fetched: usize,
pub last_cursor: Option<String>,
pub last_error: Option<String>,
}
#[derive(Clone, Debug, Eq, PartialEq, SerdeDeserialize, Serialize)]
pub struct SnsNeuronRow {
pub neuron_id: String,
pub cached_neuron_stake_e8s: u64,
pub maturity_e8s_equivalent: u64,
pub staked_maturity_e8s_equivalent: Option<u64>,
pub created_timestamp_seconds: u64,
pub created_at: String,
}