from __future__ import annotations from dataclasses import dataclass, asdict from typing import Any, Dict import json @dataclass class LocalProblem: id: str domain: str description: str version: int = 1 @dataclass class SharedVariables: variables: Dict[str, Any] version: int = 1 @dataclass class PlanDelta: delta: Dict[str, Any] timestamp: float version: int = 1 @dataclass class PrivacyBudget: lambda_privacy: float @dataclass class AuditLog: entry: str signer: str timestamp: float contract_id: str version: int = 1 def to_json(obj: Any) -> str: if hasattr(obj, "__dict__"): return json.dumps(asdict(obj), default=str) return json.dumps(obj, default=str)