#![allow(unused_imports, non_camel_case_types, non_snake_case, clippy::all)]
use serde::{Deserialize, Serialize};
use super::*;
pub type ActionName = String;
pub type ActorId = String;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum ActorType {
#[serde(rename = "human")]
Human,
#[serde(rename = "agent")]
Agent,
#[serde(rename = "device")]
Device,
#[serde(rename = "service")]
Service,
#[serde(rename = "site")]
Site,
#[serde(rename = "organization")]
Organization,
#[serde(rename = "relay")]
Relay,
#[serde(rename = "plugin")]
Plugin,
#[serde(rename = "process")]
Process,
#[serde(rename = "tool")]
Tool,
#[serde(rename = "model-provider")]
ModelProvider,
#[serde(rename = "policy-engine")]
PolicyEngine,
#[serde(rename = "proof-anchor")]
ProofAnchor,
#[serde(rename = "emergency-authority")]
EmergencyAuthority,
}
pub type AlgorithmId = String;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum ApprovalRequirement {
#[serde(rename = "none")]
None,
#[serde(rename = "conditional")]
Conditional,
#[serde(rename = "required")]
Required,
#[serde(rename = "quorum")]
Quorum,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Capability {
pub name: ActionName,
pub risk: RiskClass,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub proof_required: Option<ProofLevel>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub approval: Option<ApprovalRequirement>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub constraints: Option<Vec<Constraint>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub single_use: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub delegable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub revocable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub offline_valid: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub expires_at: Option<Timestamp>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "kind")]
pub enum Constraint {
#[serde(rename = "time_window")]
TimeWindow {
#[serde(skip_serializing_if = "Option::is_none", default)]
from: Option<Timestamp>,
until: Timestamp,
},
#[serde(rename = "target")]
Target {
patterns: Vec<String>,
},
#[serde(rename = "quantity")]
Quantity {
max: i64,
#[serde(skip_serializing_if = "Option::is_none", default)]
unit: Option<String>,
},
#[serde(rename = "rate")]
Rate {
max_per_window: i64,
window_seconds: i64,
},
#[serde(rename = "session")]
Session {
session_id: String,
},
#[serde(rename = "approval")]
Approval {
approval: ApprovalRequirement,
},
#[serde(rename = "quorum")]
Quorum {
quorum: i64,
of: Vec<ActorId>,
},
#[serde(rename = "device_binding")]
DeviceBinding {
device_actor: ActorId,
},
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum DangerTag {
#[serde(rename = "financial")]
Financial,
#[serde(rename = "destructive")]
Destructive,
#[serde(rename = "irreversible")]
Irreversible,
#[serde(rename = "security-sensitive")]
SecuritySensitive,
#[serde(rename = "privacy")]
Privacy,
#[serde(rename = "external-network")]
ExternalNetwork,
#[serde(rename = "legal-exposure")]
LegalExposure,
#[serde(rename = "high-compute")]
HighCompute,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct DelegationLink {
pub delegator: ActorId,
pub delegate: ActorId,
pub capabilities: Vec<Capability>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub constraints: Option<Vec<Constraint>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub expires_at: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub redelegation: Option<DelegationLink_Redelegation>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub proof_ref: Option<HashRef>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct DelegationLink_Redelegation {
pub allowed: bool,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub max_depth: Option<i64>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum EnforcementLevel {
#[serde(rename = "E0")]
E0,
#[serde(rename = "E1")]
E1,
#[serde(rename = "E2")]
E2,
#[serde(rename = "E3")]
E3,
#[serde(rename = "E4")]
E4,
#[serde(rename = "E5")]
E5,
}
pub type HashRef = String;
pub type InstanceId = String;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct NegativeCapability {
pub name: ActionName,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub target: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub overrides: Option<Vec<String>>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum ProofLevel {
#[serde(rename = "L0")]
L0,
#[serde(rename = "L1")]
L1,
#[serde(rename = "L2")]
L2,
#[serde(rename = "L3")]
L3,
#[serde(rename = "L4")]
L4,
#[serde(rename = "L5")]
L5,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum RiskClass {
#[serde(rename = "R0")]
R0,
#[serde(rename = "R1")]
R1,
#[serde(rename = "R2")]
R2,
#[serde(rename = "R3")]
R3,
#[serde(rename = "R4")]
R4,
#[serde(rename = "R5")]
R5,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct SignatureEnvelope {
pub algorithm: AlgorithmId,
pub signer: ActorId,
pub signature: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub hash_alg: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub alt_algorithm: Option<AlgorithmId>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub alt_signature: Option<String>,
}
pub type Timestamp = String;
pub type TrustDomain = String;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum TrustLevel {
#[serde(rename = "T0")]
T0,
#[serde(rename = "T1")]
T1,
#[serde(rename = "T2")]
T2,
#[serde(rename = "T3")]
T3,
#[serde(rename = "T4")]
T4,
#[serde(rename = "T5")]
T5,
#[serde(rename = "T6")]
T6,
#[serde(rename = "T7")]
T7,
}