from __future__ import annotations

"""Nexure Python SDK — AI Decision Governance.

Usage:
    from nexure import Nexure

    nx = Nexure(api_key="nx_live_...")
    record = nx.decisions.record(
        decision_type="credit_underwriting",
        evidence={"fico_score": 711},
        action="approve",
        decided_by="reviewer_schen",
    )
"""

from nexure._version import __version__
from nexure.async_client import AsyncNexure
from nexure.client import Nexure
from nexure.exceptions import (
    AuthenticationError,
    NexureConnectionError,
    NexureError,
    NexureTimeoutError,
    NotFoundError,
    RateLimitError,
    ServerError,
    ValidationError,
)
from nexure.models import (
    # Core models
    DecisionRecord,
    DecisionList,
    DecisionPackage,
    DecisionBrief,
    ForensicReport,
    LedgerVerification,
    # Templates
    TemplateInfo,
    TemplateDetail,
    TemplateList,
    # Analytics
    ActionBreakdownItem,
    DailyDecisionCountItem,
    AnalyticsOverview,
    OverrideDirectionInfo,
    ReviewerOverrideInfo,
    OverrideTrendWeekItem,
    AnalyticsOverrides,
    WeeklyMetricItem,
    DriftAlertItem,
    AnalyticsDrift,
    ComparisonPairItem,
    AnalyticsComparisons,
    VisibilityComponentItem,
    VisibilityScore,
    # API Keys
    ApiKeyInfo,
    ApiKeyCreated,
    ApiKeyList,
    # Anomalies
    AnomalySummary,
    AnomalyList,
    TrendPoint,
    AnomalyDetail,
    DetectionResult,
    BaselineResult,
    # Outcomes
    OutcomeTypeInfo,
    OutcomeTypeList,
    OutcomeRecord,
    OutcomeItemResult,
    BatchOutcomeResult,
    DecisionOutcomeItem,
    DecisionOutcomes,
    OutcomeCodeStatsItem,
    OutcomeStats,
    ReviewerOutcomeStatsItem,
    ReviewerOutcomes,
    OverrideGroupStatsItem,
    OverrideOutcomes,
    # Explanations
    ExplanationTemplateInfo,
    ExplanationTemplateList,
    ExplanationTemplateDetail,
    ExplanationInfo,
    ExplanationSummary,
    ExplanationListResult,
    PortalLink,
    PortalExplanation,
)

__all__ = [
    # Version
    "__version__",
    # Clients
    "AsyncNexure",
    "Nexure",
    # Exceptions
    "NexureError",
    "AuthenticationError",
    "ValidationError",
    "RateLimitError",
    "NotFoundError",
    "ServerError",
    "NexureConnectionError",
    "NexureTimeoutError",
    # Core models
    "DecisionRecord",
    "DecisionList",
    "DecisionPackage",
    "DecisionBrief",
    "ForensicReport",
    "LedgerVerification",
    # Templates
    "TemplateInfo",
    "TemplateDetail",
    "TemplateList",
    # Analytics
    "ActionBreakdownItem",
    "DailyDecisionCountItem",
    "AnalyticsOverview",
    "OverrideDirectionInfo",
    "ReviewerOverrideInfo",
    "OverrideTrendWeekItem",
    "AnalyticsOverrides",
    "WeeklyMetricItem",
    "DriftAlertItem",
    "AnalyticsDrift",
    "ComparisonPairItem",
    "AnalyticsComparisons",
    "VisibilityComponentItem",
    "VisibilityScore",
    # API Keys
    "ApiKeyInfo",
    "ApiKeyCreated",
    "ApiKeyList",
    # Anomalies
    "AnomalySummary",
    "AnomalyList",
    "TrendPoint",
    "AnomalyDetail",
    "DetectionResult",
    "BaselineResult",
    # Outcomes
    "OutcomeTypeInfo",
    "OutcomeTypeList",
    "OutcomeRecord",
    "OutcomeItemResult",
    "BatchOutcomeResult",
    "DecisionOutcomeItem",
    "DecisionOutcomes",
    "OutcomeCodeStatsItem",
    "OutcomeStats",
    "ReviewerOutcomeStatsItem",
    "ReviewerOutcomes",
    "OverrideGroupStatsItem",
    "OverrideOutcomes",
    # Explanations
    "ExplanationTemplateInfo",
    "ExplanationTemplateList",
    "ExplanationTemplateDetail",
    "ExplanationInfo",
    "ExplanationSummary",
    "ExplanationListResult",
    "PortalLink",
    "PortalExplanation",
]
