"""Price feed adapter for BeVault.""" from __future__ import annotations import hashlib from dataclasses import dataclass from typing import Optional from ..bridge import canonical_payload, to_canonical_ir from ..core import HedgeDelta, LocalArbProblem, SharedSignals @dataclass class PriceFeedAdapter: name: str = "price-feed-v1" version: str = "1.0" def generate_signal(self, asset: str, price: float, latency_ms: float) -> SharedSignals: return SharedSignals(asset=asset, price=price, latency_ms=latency_ms) def build_delta( self, local: LocalArbProblem, signals: SharedSignals, hedge_size: Optional[float] = None, ) -> HedgeDelta: hedge_size = signals.price if hedge_size is None else hedge_size ir = to_canonical_ir(local, signals) audit_ref = hashlib.sha256(canonical_payload(ir).encode("utf-8")).hexdigest() return HedgeDelta( asset=local.asset, hedge_size=hedge_size, timestamp=signals.timestamp, policy_tag="price-feed", audit_ref=audit_ref, ) def conformance_contract(self) -> dict: return { "name": self.name, "version": self.version, "produces": ["SharedSignals", "HedgeDelta"], } __all__ = ["PriceFeedAdapter"]