from __future__ import annotations from dataclasses import dataclass, field from typing import Any, Dict, List, Optional @dataclass class LocalProblem: neighborhood_id: str objective: str = "minimize_cost" data_sources: List[str] = field(default_factory=list) constraints: Dict[str, Any] = field(default_factory=dict) def to_dict(self) -> Dict[str, Any]: return { "type": "LocalProblem", "neighborhood_id": self.neighborhood_id, "objective": self.objective, "data_sources": self.data_sources, "constraints": self.constraints, } @dataclass class SharedSignals: signals: Dict[str, Any] = field(default_factory=dict) privacy_budget: Optional[float] = None def to_dict(self) -> Dict[str, Any]: return { "type": "SharedSignals", "signals": self.signals, "privacy_budget": self.privacy_budget, } @dataclass class PlanDelta: timestamp: float delta: Dict[str, Any] def to_dict(self) -> Dict[str, Any]: return {"type": "PlanDelta", "timestamp": self.timestamp, "delta": self.delta} @dataclass class PrivacyBudget: signal: str budget: float def to_dict(self) -> Dict[str, Any]: return {"type": "PrivacyBudget", "signal": self.signal, "budget": self.budget} @dataclass class AuditLog: entries: List[Dict[str, Any]] = field(default_factory=list) def add(self, entry: Dict[str, Any]) -> None: self.entries.append(entry) def to_dict(self) -> Dict[str, Any]: return {"type": "AuditLog", "entries": self.entries} __all__ = ["LocalProblem", "SharedSignals", "PlanDelta", "PrivacyBudget", "AuditLog"]