exoroute-cross-venue-order-.../exoroute/primitives.py

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",
]