"""Graph-of-Contracts (GoC) registry and minimal adapters registry. This is a lightweight, production-oriented scaffold for the MVP. """ from __future__ import annotations from dataclasses import dataclass, field from typing import Dict, Optional from .core import HedgeDelta # Import adapters to ensure their classes are discoverable when registry loads from .adapters.price_feed import PriceFeedAdapter from .adapters.broker import BrokerAdapter @dataclass class GoCRegistry: """Registry for adapters and data contracts (toy GoC).""" adapters: Dict[str, object] = field(default_factory=dict) def __post_init__(self): # Initialize to an empty mapping if not provided if self.adapters is None: self.adapters = {} def register_adapter(self, adapter) -> None: self.adapters[adapter.name] = adapter def get_adapter(self, name: str) -> Optional[object]: return self.adapters.get(name) class GraphOfContracts: """Lightweight catalog for contract versions and replay metadata.""" def __init__(self) -> None: self.contracts: Dict[str, str] = {} def register_contract(self, name: str, version: str) -> None: self.contracts[name] = version def get_contract(self, name: str) -> Optional[str]: return self.contracts.get(name) def list_contracts(self): return list(self.contracts.items()) __all__ = ["GoCRegistry", "GraphOfContracts"]