import json import time from arbsphere.primitives import LocalArbProblem, SharedSignals, PlanDelta, DualVariables, PrivacyBudget, AuditLog, TimeRounds, GoCRegistry from arbsphere.energi_bridge import to_ir, from_ir def test_local_arb_problem_json_roundtrip(): orig = LocalArbProblem( venue_id="VENUE-1", asset_pair=["A", "B"], target_mispricing=0.5, liquidity_budget=100000.0, latency_budget_ms=10, ) payload = orig.to_json() as_json = json.dumps(payload) back = LocalArbProblem.from_json(json.loads(as_json)) assert back == orig def test_plan_delta_roundtrip_via_ir(): pd = PlanDelta(delta=[{"action": "buy", "leg": "A-B", "size": 100}], timestamp=time.time(), author="org1") ir = to_ir(pd) assert ir["contract_type"] == "PlanDelta" restored = from_ir(ir) assert isinstance(restored, PlanDelta) assert restored.author == pd.author def test_dual_variables_and_privacy_audit_roundtrip(): dv = DualVariables(venue_shadows={"VENUE-1": 0.1, "VENUE-2": 0.2}) pb = PrivacyBudget(total_budget=1000.0, spent=150.0) al = AuditLog(entries=[{"event": "init", "ts": time.time()}]) for obj in (dv, pb, al): ir = to_ir(obj) assert isinstance(ir, dict) restored = from_ir(ir) assert restored is not None