use cosmwasm_std::Empty;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::validator::{Validator, ValidatorUpdate};
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub enum TgradeSudoMsg<S = Empty> {
BeginBlock {
evidence: Vec<Evidence>,
},
EndBlock {},
EndWithValidatorUpdate {},
PrivilegeChange(PrivilegeChangeMsg),
Export {},
Import(S),
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub enum PrivilegeChangeMsg {
Promoted {},
Demoted {},
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema, Debug, Default)]
pub struct ValidatorDiff {
pub diffs: Vec<ValidatorUpdate>,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema, Debug)]
pub struct Evidence {
pub evidence_type: EvidenceType,
pub validator: Validator,
pub height: u64,
pub time: u64,
pub total_voting_power: u64,
}
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, JsonSchema, Debug)]
#[serde(rename_all = "snake_case")]
pub enum EvidenceType {
DuplicateVote,
LightClientAttack,
}