use crate::prelude::{Signature, Timestamp};
use holo_hash::{AgentPubKey, DhtOpHash};
use holochain_serialized_bytes::prelude::*;
use holochain_zome_types::prelude::*;
use std::vec::IntoIter;
#[derive(
Debug,
Clone,
PartialEq,
Eq,
PartialOrd,
Ord,
Hash,
serde::Serialize,
serde::Deserialize,
SerializedBytes,
)]
#[cfg_attr(feature = "ts_rs", derive(ts_rs::TS))]
#[cfg_attr(
feature = "ts_rs",
ts(export, export_to = "hdk/validation-receipts.ts")
)]
pub struct ValidationReceipt {
pub dht_op_hash: DhtOpHash,
pub validation_status: ValidationStatus,
pub validators: Vec<AgentPubKey>,
pub when_integrated: Timestamp,
}
#[derive(
Debug,
Clone,
PartialEq,
Eq,
PartialOrd,
Ord,
Hash,
serde::Serialize,
serde::Deserialize,
SerializedBytes,
)]
#[cfg_attr(feature = "ts_rs", derive(ts_rs::TS))]
#[cfg_attr(
feature = "ts_rs",
ts(export, export_to = "hdk/validation-receipts.ts")
)]
pub struct SignedValidationReceipt {
pub receipt: ValidationReceipt,
pub validators_signatures: Vec<Signature>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, SerializedBytes)]
pub struct ValidationReceiptBundle(Vec<SignedValidationReceipt>);
impl From<Vec<SignedValidationReceipt>> for ValidationReceiptBundle {
fn from(value: Vec<SignedValidationReceipt>) -> Self {
ValidationReceiptBundle(value)
}
}
impl IntoIterator for ValidationReceiptBundle {
type Item = SignedValidationReceipt;
type IntoIter = IntoIter<Self::Item>;
fn into_iter(self) -> Self::IntoIter {
self.0.into_iter()
}
}