"""Pydantic models for vikdata API."""

from vikdata.models.auth import (
    AccessTokenResponse,
    LoginRequest,
    LogoutResponse,
    RefreshRequest,
    TokenResponse,
    UserResponse,
)
from vikdata.models.api_key import (
    ApiKeyCreate,
    ApiKeyCreateResponse,
    ApiKeyListResponse,
    ApiKeyResponse,
    ApiKeyRotateResponse,
    ApiKeyUpdateRoles,
    ApiKeyWithRolesResponse,
)
from vikdata.models.common import (
    ErrorResponse,
    PaginatedResponse,
    PaginationMeta,
)
from vikdata.models.role import (
    PermissionResponse,
    RoleCreate,
    RoleListResponse,
    RolePermissionRequest,
    RoleResponse,
    RoleUpdate,
    UserRoleRequest,
    UserRoleResponse,
)
from vikdata.models.service import (
    HealthStatus,
    HeartbeatResponse,
    Service,
    ServiceHealth,
    ServiceRegistration,
)
from vikdata.models.tenant import (
    TenantCreate,
    TenantListResponse,
    TenantResponse,
    TenantSettingsUpdate,
    TenantStatusResponse,
    TenantUpdate,
)
from vikdata.models.usage import (
    UsageMetric,
    UsageMetrics,
    UsageReport,
    UsageReportRequest,
    UsageReportResponse,
    UsageStats,
)
from vikdata.models.user import (
    UserBase,
    UserCreate,
    UserListParams,
    UserListResponse,
    UserResponse as UserDetailResponse,
    UserUpdate,
)
from vikdata.models.permission import (
    PermissionBase,
    PermissionListParams,
    PermissionListResponse,
    PermissionResponse as PermissionDetailResponse,
)
from vikdata.models.lookup import (
    Lookup,
    LookupCreate,
    LookupUpdate,
    LookupCategory,
    LookupsResponse,
    KNOWN_CATEGORIES,
)
from vikdata.models.vessel import (
    Vessel,
    VesselListItem,
    VesselEquipment,
    CreateVesselRequest,
    UpdateVesselRequest,
    TransferVesselRequest,
    VesselListParams,
)
from vikdata.models.rule import (
    Rule,
    RuleListItem,
    CreateRuleRequest,
    UpdateRuleRequest,
    RuleToggleRequest,
    RuleTestRequest,
    RuleTestResult,
    ManualTriggerResult,
    RuleListParams,
)
from vikdata.models.ingress import (
    IngressCore,
    IngressCoreListItem,
    IngressResources,
    CreateIngressCoreRequest,
    UpdateIngressCoreRequest,
    IngressChannel,
    IngressChannelListItem,
    CreateIngressChannelRequest,
    UpdateIngressChannelRequest,
    IngressDestination,
    IngressDestinationListItem,
    CreateIngressDestinationRequest,
    UpdateIngressDestinationRequest,
    IngressMetric,
    IngressPreviewEvent,
    PreviewConfigUpdate,
    PreviewEventMetadata,
    CoreListParams,
    ChannelListParams,
    DestinationListParams,
    MetricsQueryParams,
)
from vikdata.models.billing import (
    PlanSeries,
    ResourceLimits,
    UsagePricingConfig,
    Plan,
    Subscription,
    CreateSubscriptionRequest,
    UpdateSubscriptionRequest,
    CancelSubscriptionRequest,
    SeriesQuota,
    QuotaRequest,
    CreateQuotaRequestModel,
    ReviewQuotaRequestModel,
    UsageSummary,
    InvoiceLineItem,
    Invoice,
    CheckoutSessionRequest,
    CheckoutSessionResponse,
    BillingPortalResponse,
    ListPlansParams,
    QuotaRequestListParams,
)
from vikdata.models.admin import (
    AdminStats,
    AdminSubscription,
    AdminSubscriptionListParams,
    AdminPlan,
    CreatePlanRequest,
    UpdatePlanRequest,
    AdminPlanListParams,
)

__all__ = [
    # Auth
    "AccessTokenResponse",
    "LoginRequest",
    "LogoutResponse",
    "RefreshRequest",
    "TokenResponse",
    "UserResponse",
    # API Keys
    "ApiKeyCreate",
    "ApiKeyCreateResponse",
    "ApiKeyListResponse",
    "ApiKeyResponse",
    "ApiKeyRotateResponse",
    "ApiKeyUpdateRoles",
    "ApiKeyWithRolesResponse",
    # Common
    "ErrorResponse",
    "PaginatedResponse",
    "PaginationMeta",
    # Roles
    "PermissionResponse",
    "RoleCreate",
    "RoleListResponse",
    "RolePermissionRequest",
    "RoleResponse",
    "RoleUpdate",
    "UserRoleRequest",
    "UserRoleResponse",
    # Services
    "HealthStatus",
    "HeartbeatResponse",
    "Service",
    "ServiceHealth",
    "ServiceRegistration",
    # Tenants
    "TenantCreate",
    "TenantListResponse",
    "TenantResponse",
    "TenantSettingsUpdate",
    "TenantStatusResponse",
    "TenantUpdate",
    # Usage
    "UsageMetric",
    "UsageMetrics",
    "UsageReport",
    "UsageReportRequest",
    "UsageReportResponse",
    "UsageStats",
    # Users
    "UserBase",
    "UserCreate",
    "UserDetailResponse",
    "UserListParams",
    "UserListResponse",
    "UserUpdate",
    # Permissions
    "PermissionBase",
    "PermissionDetailResponse",
    "PermissionListParams",
    "PermissionListResponse",
    # Lookups
    "Lookup",
    "LookupCreate",
    "LookupUpdate",
    "LookupCategory",
    "LookupsResponse",
    "KNOWN_CATEGORIES",
    # Vessels
    "Vessel",
    "VesselListItem",
    "VesselEquipment",
    "CreateVesselRequest",
    "UpdateVesselRequest",
    "TransferVesselRequest",
    "VesselListParams",
    # Rules
    "Rule",
    "RuleListItem",
    "CreateRuleRequest",
    "UpdateRuleRequest",
    "RuleToggleRequest",
    "RuleTestRequest",
    "RuleTestResult",
    "ManualTriggerResult",
    "RuleListParams",
    # Ingress
    "IngressCore",
    "IngressCoreListItem",
    "IngressResources",
    "CreateIngressCoreRequest",
    "UpdateIngressCoreRequest",
    "IngressChannel",
    "IngressChannelListItem",
    "CreateIngressChannelRequest",
    "UpdateIngressChannelRequest",
    "IngressDestination",
    "IngressDestinationListItem",
    "CreateIngressDestinationRequest",
    "UpdateIngressDestinationRequest",
    "IngressMetric",
    "IngressPreviewEvent",
    "PreviewConfigUpdate",
    "PreviewEventMetadata",
    "CoreListParams",
    "ChannelListParams",
    "DestinationListParams",
    "MetricsQueryParams",
    # Billing
    "PlanSeries",
    "ResourceLimits",
    "UsagePricingConfig",
    "Plan",
    "Subscription",
    "CreateSubscriptionRequest",
    "UpdateSubscriptionRequest",
    "CancelSubscriptionRequest",
    "SeriesQuota",
    "QuotaRequest",
    "CreateQuotaRequestModel",
    "ReviewQuotaRequestModel",
    "UsageSummary",
    "InvoiceLineItem",
    "Invoice",
    "CheckoutSessionRequest",
    "CheckoutSessionResponse",
    "BillingPortalResponse",
    "ListPlansParams",
    "QuotaRequestListParams",
    # Admin
    "AdminStats",
    "AdminSubscription",
    "AdminSubscriptionListParams",
    "AdminPlan",
    "CreatePlanRequest",
    "UpdatePlanRequest",
    "AdminPlanListParams",
]
