use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CommitteeVotesInner {
#[serde(rename = "tx_hash")]
pub tx_hash: String,
#[serde(rename = "voter_hot_id")]
pub voter_hot_id: String,
#[serde(rename = "proposal_id")]
pub proposal_id: String,
#[serde(rename = "proposal_tx_hash")]
pub proposal_tx_hash: String,
#[serde(rename = "proposal_index")]
pub proposal_index: i32,
#[serde(rename = "governance_type")]
pub governance_type: GovernanceType,
#[serde(rename = "vote")]
pub vote: Vote,
#[serde(rename = "metadata_url", deserialize_with = "Option::deserialize")]
pub metadata_url: Option<String>,
#[serde(rename = "metadata_hash", deserialize_with = "Option::deserialize")]
pub metadata_hash: Option<String>,
#[serde(rename = "block_height")]
pub block_height: i32,
#[serde(rename = "block_time")]
pub block_time: i32,
}
impl CommitteeVotesInner {
pub fn new(tx_hash: String, voter_hot_id: String, proposal_id: String, proposal_tx_hash: String, proposal_index: i32, governance_type: GovernanceType, vote: Vote, metadata_url: Option<String>, metadata_hash: Option<String>, block_height: i32, block_time: i32) -> CommitteeVotesInner {
CommitteeVotesInner {
tx_hash,
voter_hot_id,
proposal_id,
proposal_tx_hash,
proposal_index,
governance_type,
vote,
metadata_url,
metadata_hash,
block_height,
block_time,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum GovernanceType {
#[serde(rename = "hard_fork_initiation")]
HardForkInitiation,
#[serde(rename = "new_committee")]
NewCommittee,
#[serde(rename = "new_constitution")]
NewConstitution,
#[serde(rename = "info_action")]
InfoAction,
#[serde(rename = "no_confidence")]
NoConfidence,
#[serde(rename = "parameter_change")]
ParameterChange,
#[serde(rename = "treasury_withdrawals")]
TreasuryWithdrawals,
}
impl Default for GovernanceType {
fn default() -> GovernanceType {
Self::HardForkInitiation
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Vote {
#[serde(rename = "yes")]
Yes,
#[serde(rename = "no")]
No,
#[serde(rename = "abstain")]
Abstain,
}
impl Default for Vote {
fn default() -> Vote {
Self::Yes
}
}