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()}