dpm_model/work/
contract.rs1use crate::*;
4use serde::{Deserialize, Serialize};
5use std::collections::BTreeSet;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9#[serde(deny_unknown_fields)]
10pub struct WorkContract {
11 pub objective: String,
13 pub acceptance: Vec<AcceptanceCriterion>,
15 #[serde(default, skip_serializing_if = "Option::is_none")]
17 pub instructions: Option<crate::WorkInstructions>,
18 pub capabilities: BTreeSet<String>,
20 pub requirement_ids: BTreeSet<RequirementId>,
22 pub assets: Vec<crate::AssetRequirement>,
24 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub condition: Option<crate::WorkCondition>,
27 #[serde(default, skip_serializing_if = "crate::JoinPolicy::is_default")]
29 pub join: crate::JoinPolicy,
30}