92 lines
2.0 KiB
Python
92 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class LocalProblem(BaseModel):
|
|
site_id: str
|
|
objective: str
|
|
parameters: Dict[str, Any]
|
|
domain: str = "electricity"
|
|
contract_id: Optional[str] = None
|
|
|
|
|
|
class SharedVariables(BaseModel):
|
|
name: str
|
|
value: Any
|
|
version: int
|
|
privacy_bound: Optional[float] = None
|
|
source_contract_id: Optional[str] = None
|
|
|
|
|
|
SharedVariable = SharedVariables
|
|
|
|
|
|
class DualVariables(BaseModel):
|
|
primal: float
|
|
dual: float
|
|
step: Optional[int] = None
|
|
|
|
|
|
class PlanDelta(BaseModel):
|
|
delta_id: str
|
|
contract_id: Optional[str] = None
|
|
changes: Dict[str, Any]
|
|
timestamp: float
|
|
author: Optional[str] = None
|
|
provenance: Dict[str, Any] = Field(default_factory=dict)
|
|
privacy_budget: Optional[float] = None
|
|
signature: Optional[str] = None
|
|
|
|
|
|
class DeltaEnvelope(BaseModel):
|
|
replica_id: str
|
|
sequence: int
|
|
plan_delta: PlanDelta
|
|
previous_hash: Optional[str] = None
|
|
entry_hash: Optional[str] = None
|
|
|
|
|
|
class PrivacyBudget(BaseModel):
|
|
budget: float
|
|
used: float
|
|
scope: Optional[str] = None
|
|
|
|
|
|
class AuditLog(BaseModel):
|
|
entry_id: str
|
|
action: str
|
|
timestamp: float
|
|
actor: str
|
|
result: Optional[str] = None
|
|
metadata: Dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class ContractTemplate(BaseModel):
|
|
template_id: str
|
|
name: str
|
|
domain: str
|
|
schema_version: int = 1
|
|
description: Optional[str] = None
|
|
fields: Dict[str, str] = Field(default_factory=dict)
|
|
|
|
|
|
class GovernanceEvent(BaseModel):
|
|
event_id: str
|
|
event_type: str
|
|
actor: str
|
|
timestamp: float
|
|
payload: Dict[str, Any] = Field(default_factory=dict)
|
|
previous_hash: Optional[str] = None
|
|
entry_hash: Optional[str] = None
|
|
signature: Optional[str] = None
|
|
|
|
|
|
class AdapterConformance(BaseModel):
|
|
adapter_id: str
|
|
contract_id: str
|
|
status: str
|
|
notes: List[str] = Field(default_factory=list)
|