73 lines
1.4 KiB
Python
73 lines
1.4 KiB
Python
from __future__ import annotations
|
|
from dataclasses import dataclass, asdict
|
|
from typing import Any, Dict, List
|
|
import json
|
|
|
|
|
|
@dataclass
|
|
class LocalProblem:
|
|
id: str
|
|
asset: str
|
|
venue: str
|
|
objective: str
|
|
constraints: Dict[str, Any]
|
|
price_target: float
|
|
tolerance: float
|
|
|
|
def to_json(self) -> str:
|
|
return json.dumps(asdict(self), default=str)
|
|
|
|
|
|
@dataclass
|
|
class SharedVariables:
|
|
variables: Dict[str, Any]
|
|
version: int
|
|
contract_id: str
|
|
|
|
def to_json(self) -> str:
|
|
return json.dumps(asdict(self), default=str)
|
|
|
|
|
|
@dataclass
|
|
class PlanDelta:
|
|
delta: Dict[str, Any]
|
|
timestamp: str
|
|
author: str
|
|
contract_id: str
|
|
privacy_budget: float
|
|
|
|
def to_json(self) -> str:
|
|
return json.dumps(asdict(self), default=str)
|
|
|
|
|
|
@dataclass
|
|
class DualVariables:
|
|
shadow_prices: Dict[str, float]
|
|
version: int
|
|
contract_id: str = ""
|
|
|
|
def to_json(self) -> str:
|
|
return json.dumps(asdict(self), default=str)
|
|
|
|
|
|
@dataclass
|
|
class AuditLogEntry:
|
|
event: str
|
|
timestamp: str
|
|
hash: str
|
|
details: Dict[str, Any] = None
|
|
|
|
def to_json(self) -> str:
|
|
return json.dumps(asdict(self), default=str)
|
|
|
|
|
|
@dataclass
|
|
class GovernanceAuditLog:
|
|
entries: List[AuditLogEntry]
|
|
|
|
def add(self, entry: AuditLogEntry) -> None:
|
|
self.entries.append(entry)
|
|
|
|
def to_json(self) -> str:
|
|
return json.dumps([asdict(e) for e in self.entries], default=str)
|