"""Shared Pydantic models mirroring ontology entities."""

# Import all enums
# Import coverage models
from .coverage.core import (
    CompiledCoveragePolicy,
    ConflictRules,
    CoveragePolicy,
    CrossCheck,
    Defaults,
    EvidenceItem,
    GuidanceRef,
    Privacy,
    QuestionTemplates,
    SchedulePolicy,
    StatusClassifier,
    StatusClassifierConfig,
    TaxYearBoundary,
    Trigger,
    Validity,
)
from .coverage.evaluation import (
    BlockingItem,
    Citation,
    ClarifyContext,
    ClarifyResponse,
    CoverageGap,
    CoverageItem,
    CoverageReport,
    FoundEvidence,
    ScheduleCoverage,
    UploadOption,
)
from .coverage.utils import CoverageAudit, PolicyError, PolicyVersion, ValidationResult

# Import all entities
from .entities import (
    Account,
    BaseEntity,
    Calculation,
    Document,
    Evidence,
    ExpenseItem,
    FormBox,
    IncomeItem,
    Party,
    Payment,
    PropertyAsset,
    Rule,
    TaxpayerProfile,
)
from .enums import (
    DocumentKind,
    ExpenseType,
    HealthStatus,
    IncomeType,
    OverallStatus,
    PartySubtype,
    PropertyUsage,
    Role,
    Status,
    TaxpayerType,
)

# Import error models
from .errors import ErrorResponse, ValidationError, ValidationErrorResponse

# Import event schemas
from .events import (
    EVENT_SCHEMA_MAP,
    BaseEventData,
    CalculationReadyEventData,
    DocumentExtractedEventData,
    DocumentIngestedEventData,
    DocumentOCRReadyEventData,
    FirmSyncCompletedEventData,
    FormFilledEventData,
    HMRCSubmittedEventData,
    KGUpsertedEventData,
    KGUpsertReadyEventData,
    RAGIndexedEventData,
    ReviewCompletedEventData,
    ReviewRequestedEventData,
    get_schema_for_topic,
    validate_event_data,
)

# Import health models
from .health import HealthCheck, ServiceHealth

# Import request models
from .requests import (
    DocumentUploadRequest,
    ExtractionRequest,
    FirmSyncRequest,
    HMRCSubmissionRequest,
    RAGSearchRequest,
    ScheduleComputeRequest,
)

# Import response models
from .responses import (
    DocumentUploadResponse,
    ExtractionResponse,
    FirmSyncResponse,
    HMRCSubmissionResponse,
    RAGSearchResponse,
    ScheduleComputeResponse,
)

# Import utility functions
from .utils import get_entity_schemas

__all__ = [
    # Enums
    "DocumentKind",
    "ExpenseType",
    "HealthStatus",
    "IncomeType",
    "OverallStatus",
    "PartySubtype",
    "PropertyUsage",
    "Role",
    "Status",
    "TaxpayerType",
    # Entities
    "Account",
    "BaseEntity",
    "Calculation",
    "Document",
    "Evidence",
    "ExpenseItem",
    "FormBox",
    "IncomeItem",
    "Party",
    "Payment",
    "PropertyAsset",
    "Rule",
    "TaxpayerProfile",
    # Errors
    "ErrorResponse",
    "ValidationError",
    "ValidationErrorResponse",
    # Health
    "HealthCheck",
    "ServiceHealth",
    # Requests
    "DocumentUploadRequest",
    "ExtractionRequest",
    "FirmSyncRequest",
    "HMRCSubmissionRequest",
    "RAGSearchRequest",
    "ScheduleComputeRequest",
    # Responses
    "DocumentUploadResponse",
    "ExtractionResponse",
    "FirmSyncResponse",
    "HMRCSubmittedEventData",
    "RAGSearchResponse",
    "ScheduleComputeResponse",
    # Utils
    "get_entity_schemas",
    # Coverage core models
    "Validity",
    "StatusClassifier",
    "StatusClassifierConfig",
    "EvidenceItem",
    "CrossCheck",
    "SchedulePolicy",
    "Trigger",
    "GuidanceRef",
    "QuestionTemplates",
    "ConflictRules",
    "TaxYearBoundary",
    "Defaults",
    "Privacy",
    "CoveragePolicy",
    "CompiledCoveragePolicy",
    # Coverage evaluation models
    "FoundEvidence",
    "Citation",
    "CoverageItem",
    "ScheduleCoverage",
    "BlockingItem",
    "CoverageReport",
    "CoverageGap",
    "ClarifyContext",
    "UploadOption",
    "ClarifyResponse",
    # Coverage utility models
    "PolicyError",
    "ValidationResult",
    "PolicyVersion",
    "CoverageAudit",
    # Event schemas
    "BaseEventData",
    "DocumentIngestedEventData",
    "DocumentOCRReadyEventData",
    "DocumentExtractedEventData",
    "KGUpsertReadyEventData",
    "KGUpsertedEventData",
    "RAGIndexedEventData",
    "CalculationReadyEventData",
    "FormFilledEventData",
    "HMRCSubmittedEventData",
    "ReviewRequestedEventData",
    "ReviewCompletedEventData",
    "FirmSyncCompletedEventData",
    "EVENT_SCHEMA_MAP",
    "validate_event_data",
    "get_schema_for_topic",
]
