use serde_derive::{Deserialize, Serialize}; use solana_sdk::hash::Hash; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::Signature; #[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] pub enum ProofStatus { Skipped, Valid, NotValid, } impl Default for ProofStatus { fn default() -> Self { ProofStatus::Skipped } } #[derive(Default, Debug, Serialize, Deserialize, Clone)] pub struct ProofInfo { pub id: Pubkey, pub signature: Signature, pub sha_state: Hash, pub status: ProofStatus, } #[derive(Default, Debug, Serialize, Deserialize, Clone)] pub struct ValidationInfo { pub id: Pubkey, pub proof_mask: Vec, } #[derive(Debug, Serialize, Deserialize)] pub enum StorageContract { //don't move this Default, ValidatorStorage { entry_height: u64, hash: Hash, lockout_validations: Vec>, reward_validations: Vec>, }, ReplicatorStorage { proofs: Vec, reward_validations: Vec>, }, }