use crate::*;
use serde::{Deserialize, Serialize};
use std::collections::BTreeSet;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct WorkContract {
pub objective: String,
pub acceptance: Vec<AcceptanceCriterion>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub instructions: Option<crate::WorkInstructions>,
pub capabilities: BTreeSet<String>,
pub requirement_ids: BTreeSet<RequirementId>,
pub assets: Vec<crate::AssetRequirement>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub condition: Option<crate::WorkCondition>,
#[serde(default, skip_serializing_if = "crate::JoinPolicy::is_default")]
pub join: crate::JoinPolicy,
}