26 lines
836 B
Python
26 lines
836 B
Python
from typing import Iterable, Dict, Any
|
|
from .policy import PolicyEngine
|
|
from .ledger_merkle import MerkleLedger
|
|
from .aggregation import Aggregator
|
|
|
|
|
|
class Core:
|
|
def __init__(self):
|
|
self.policy = PolicyEngine()
|
|
self.ledger = MerkleLedger()
|
|
self.aggregator = Aggregator()
|
|
|
|
def load_policies(self, dsl: str) -> None:
|
|
self.policy.load_policies(dsl)
|
|
|
|
def ingest_adapter_signal(self, venue: str, signal: str, value: float) -> None:
|
|
# Log to ledger and aggregator
|
|
self.ledger.add_entry({"venue": venue, "signal": signal, "value": value})
|
|
self.aggregator.add_signal(venue, signal, value)
|
|
|
|
def current_aggregate(self) -> float:
|
|
return self.aggregator.aggregate_price()
|
|
|
|
def root_proof(self) -> Dict[str, Any]:
|
|
return {"root": self.ledger.root().hex()}
|