use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct VerifyChainBody {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ext: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AuditChainReport {
pub verified: bool,
pub entries_examined: usize,
pub entries_verified: usize,
pub legacy_skipped: usize,
pub unparseable_skipped: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub head: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub chain_break: Option<AuditChainBreak>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ext: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AuditChainBreak {
pub kind: String,
pub index: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub event_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VtaVerifyExt {
pub pre_chain_rows: usize,
pub unchained_after_open: usize,
pub resumed_from_prune: bool,
pub pruned_entries: usize,
}
pub const VTA_EXT_KEY: &str = "org.openvtc.vta";