use serde::{Deserialize, Serialize};
use super::algebraic_law::AlgebraicLaw;
use super::defendant_entry::DefendantEntry;
use super::independence_rule::IndependenceRule;
use super::op_declaration::OpDeclaration;
use super::witness_set::WitnessSet;
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
#[serde(deny_unknown_fields)]
pub struct TomlDocument {
pub version: String,
#[serde(default)]
pub ops: Vec<OpDeclaration>,
#[serde(default)]
pub witnesses: Vec<WitnessSet>,
#[serde(default)]
pub defendants: Vec<DefendantEntry>,
#[serde(default)]
pub laws: Vec<AlgebraicLaw>,
#[serde(default)]
pub independence: Vec<IndependenceRule>,
}