use candid::CandidType;
use ex3_timestamp::TimeInNs;
use serde::{Deserialize, Serialize};

use crate::NodeProvider;

#[derive(CandidType, Debug, Default, Clone, Deserialize, Serialize, PartialEq, Eq)]
pub struct DataIntegrityShardingSubReport {
    pub merkle_proof: Vec<u8>,
    /// The data digest of the sharding report
    pub data_digest: [u8; 32],
    /// Total count of the sharding vaults
    pub total_count: usize,
    /// Current balance vault index in the sharding vaults
    pub index: usize,
}

#[derive(CandidType, Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
pub struct ShardingReportSubmitter {
    pub provider: NodeProvider,
    pub last_active_time: TimeInNs,
}
