55 lines
1.0 KiB
Python
55 lines
1.0 KiB
Python
from dataclasses import dataclass, field
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
|
|
@dataclass
|
|
class LocalProblem:
|
|
id: str
|
|
domain: str # e.g., "electric", "water", "thermal"
|
|
assets: List[str]
|
|
objective: Dict[str, Any] # simple objective description, can be expanded
|
|
constraints: List[Dict[str, Any]] = field(default_factory=list)
|
|
solver_hint: Optional[str] = None
|
|
|
|
|
|
@dataclass
|
|
class SharedVariables:
|
|
version: int
|
|
signals: Dict[str, Any] # e.g., forecasts, priors
|
|
|
|
|
|
@dataclass
|
|
class DualVariables:
|
|
multipliers: Dict[str, float]
|
|
|
|
|
|
@dataclass
|
|
class PlanDelta:
|
|
delta: Dict[str, Any]
|
|
timestamp: float
|
|
author: str
|
|
contract_id: str
|
|
signature: Optional[str] = None
|
|
|
|
|
|
@dataclass
|
|
class PrivacyBudget:
|
|
signal: str
|
|
budget: float
|
|
expiry: Optional[float] = None
|
|
|
|
|
|
@dataclass
|
|
class AuditLog:
|
|
entry: str
|
|
signer: str
|
|
timestamp: float
|
|
contract_id: str
|
|
version: int
|
|
|
|
|
|
@dataclass
|
|
class PolicyBlock:
|
|
safety: Dict[str, Any] = None
|
|
exposure_rules: Dict[str, Any] = None
|