use cid::Cid;
use fvm_ipld_encoding::Cbor;
use super::*;
use crate::ActorID;
use crate::randomness::Randomness;
pub type PoStRandomness = Randomness;
#[derive(Debug, PartialEq, Clone, Eq, Serialize_tuple, Deserialize_tuple)]
pub struct SectorInfo {
pub proof: RegisteredSealProof,
pub sector_number: SectorNumber,
pub sealed_cid: Cid,
}
#[derive(Debug, PartialEq, Clone, Eq, Serialize_tuple, Deserialize_tuple)]
pub struct PoStProof {
pub post_proof: RegisteredPoStProof,
#[serde(with = "serde_bytes")]
pub proof_bytes: Vec<u8>,
}
#[derive(Debug, PartialEq, Default, Clone, Eq, Serialize_tuple, Deserialize_tuple)]
pub struct WinningPoStVerifyInfo {
pub randomness: PoStRandomness,
pub proofs: Vec<PoStProof>,
pub challenge_sectors: Vec<SectorInfo>,
pub prover: ActorID,
}
#[derive(Debug, PartialEq, Default, Clone, Eq, Serialize_tuple, Deserialize_tuple)]
pub struct WindowPoStVerifyInfo {
pub randomness: PoStRandomness,
pub proofs: Vec<PoStProof>,
pub challenged_sectors: Vec<SectorInfo>,
pub prover: ActorID,
}
#[derive(Debug, PartialEq, Default, Clone, Eq, Serialize_tuple, Deserialize_tuple)]
pub struct OnChainWindowPoStVerifyInfo {
pub proofs: Vec<PoStProof>,
}
impl Cbor for WindowPoStVerifyInfo {}
impl Cbor for PoStProof {}
impl Cbor for SectorInfo {}