74 lines
1.4 KiB
Python
74 lines
1.4 KiB
Python
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",
|
|
]
|