#![allow(unused_imports, non_camel_case_types, non_snake_case, clippy::all)]
use serde::{Deserialize, Serialize};
use super::*;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Action {
pub name: ActionName,
pub risk: RiskClass,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub proof: Option<ProofLevel>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub approval: Option<ApprovalRequirement>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub allow_targets: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub deny_targets: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub allow_actors: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub deny_actors: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub parameters: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub reversible: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub danger_tags: Option<Vec<DangerTag>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub pre_conditions: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub reversal_note: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AgentContract {
pub contract_version: AgentContract_ContractVersion,
pub spec_version: String,
pub project: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub trust_domain: Option<TrustDomain>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub references: Option<AgentContract_References>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub target_sets: Option<std::collections::BTreeMap<String, Vec<String>>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub actions: Option<Vec<Action>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub forbidden: Option<Vec<Forbidden>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub integrations: Option<AgentContract_Integrations>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub conformance: Option<AgentContract_Conformance>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AgentContract_Conformance {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub profiles: Option<Vec<String>>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum AgentContract_ContractVersion {
#[serde(rename = "1")]
V1,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AgentContract_Integrations {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub mcp_tools: Option<Vec<serde_json::Value>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub proofrpc_services: Option<Vec<serde_json::Value>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub test_commands: Option<Vec<String>>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AgentContract_References {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub threat_model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub policy_engine: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub actions_library: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Forbidden {
pub action: ActionName,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub reason: Option<String>,
}