from __future__ import annotations import json from typing import Dict, Any, List from .trace import LocalEvent, PlanDelta, OrderEvent, FillEvent class FixFeedAdapter: """Starter FIX feed adapter (simulation). Emits LocalEvent instances as JSON over an in-process queue for now. """ def __init__(self) -> None: self._outbox: List[str] = [] def emit(self, event: LocalEvent) -> None: self._outbox.append(json.dumps(event.to_dict())) def drain(self) -> List[str]: out, self._outbox = self._outbox, [] return out class ExchangeGatewaySandbox: """Starter exchange gateway sandbox (simulation). Consumes JSON messages and returns a parsed dict representation. """ def __init__(self) -> None: self._inbox: List[str] = [] def receive(self, payload: str) -> None: self._inbox.append(payload) def parse_all(self) -> List[Dict[str, Any]]: messages = [json.loads(p) for p in self._inbox] self._inbox.clear() return messages