from __future__ import annotations from typing import Any, Dict, List, Optional from pydantic import BaseModel, ConfigDict, Field class DslModel(BaseModel): model_config = ConfigDict(extra="forbid", validate_assignment=True) def to_dict(self) -> Dict[str, Any]: return self.model_dump(mode="json", exclude_none=True) class LocalProblem(DslModel): domain: str objective: str constraints: Dict[str, Any] = Field(default_factory=dict) metadata: Dict[str, Any] = Field(default_factory=dict) class SharedVariables(DslModel): variables: Dict[str, Any] = Field(default_factory=dict) class PlanDelta(DslModel): changes: Dict[str, Any] = Field(default_factory=dict) class DualVariables(DslModel): alphas: Dict[str, float] = Field(default_factory=dict) class PrivacyBudget(DslModel): budget: Dict[str, Any] = Field(default_factory=dict) class AuditLog(DslModel): entries: List[str] = Field(default_factory=list) class PolicyBlock(DslModel): policy: Dict[str, Any] = Field(default_factory=dict) class GraphOfContractsSeed(DslModel): name: str seeds: Dict[str, Any] = Field(default_factory=dict) domains: List[str] = Field(default_factory=lambda: ["Energy", "Robotics"]) did: Optional[str] = None governance_anchor: Optional[str] = None transport: str = "tls" class RegistryEntry(DslModel): name: str domains: List[str] artifacts: Dict[str, str] seed_summary: Dict[str, Any] = Field(default_factory=dict) did_binding: Dict[str, str] = Field(default_factory=dict) governance_anchor: Dict[str, Any] = Field(default_factory=dict) transport: str = "tls"