from __future__ import annotations from dataclasses import dataclass, field from typing import Dict, List, Any, Optional from datetime import datetime @dataclass class LocalProblem: id: str domain: str assets: List[str] objective: str constraints: Dict[str, Any] = field(default_factory=dict) @dataclass class SharedVariables: forecasts: Dict[str, float] = field(default_factory=dict) priors: Dict[str, float] = field(default_factory=dict) version: int = 0 @dataclass class PlanDelta: delta: Dict[str, Any] timestamp: datetime author: str contract_id: str signature: Optional[str] = None @dataclass class DualVariables: lambda_latency: float = 0.0 lambda_fees: float = 0.0 @dataclass class PrivacyBudget: budget: float expiry: Optional[datetime] = None @dataclass class AuditLog: entry: str signer: str timestamp: datetime contract_id: str version: int @dataclass class GraphOfContractsRegistry: registry: Dict[str, str] = field(default_factory=dict) def register(self, adapter_id: str, contract_version: str) -> None: self.registry[adapter_id] = contract_version def get_version(self, adapter_id: str) -> Optional[str]: return self.registry.get(adapter_id) __all__ = [ "LocalProblem", "SharedVariables", "PlanDelta", "DualVariables", "PrivacyBudget", "AuditLog", "GraphOfContractsRegistry", ]