"""Models package.

Re-exports SQLAlchemy models and shared building blocks so they can be imported
from a single location (``from app.models import User``) and so the ORM metadata
is populated when this package is imported.
"""

from app.models.auth import (
    EmailVerification,
    PasswordResetToken,
    SecurityEvent,
    StudentVerificationHistory,
    TemporaryRegistration,
    TrustedDevice,
    User,
    UserProfile,
)
from app.models.advertisement import Advertisement
from app.models.audit import AdminAuditLog
from app.models.base import BaseModel, utcnow
from app.models.enums import (
    AccountStatus,
    AdvertisementMediaType,
    AdvertisementPlacement,
    AdvertisementType,
    ListingCondition,
    ListingStatus,
    ListingVisibility,
    NotificationType,
    OfferStatus,
    PaymentStatus,
    PremiumRequestStatus,
    RelatedEntityType,
    ReportEntityType,
    ReportReason,
    ReportStatus,
    ReviewStatus,
    StudentVerificationStatus,
    SubscriptionStatus,
    UserRole,
    VerificationHistoryAction,
    VerificationPurpose,
)
from app.models.chat import (
    Conversation,
    ConversationStatus,
    Message,
    MessageType,
    Offer,
)
from app.models.marketplace import Category, Favorite, Listing, ListingImage, ListingView
from app.models.activity import ActivityEvent
from app.models.notification import Notification
from app.models.premium_config import PremiumFeature, PremiumPaymentSettings, PremiumPlan
from app.models.report import Report
from app.models.rewarded_ad_event import RewardedAdEvent
from app.models.reputation import UserReputation
from app.models.review import Review
from app.models.subscription import PremiumRequest, Subscription
from app.models.transaction import CompletedTransaction

__all__ = [
    "BaseModel",
    "utcnow",
    # Enums
    "UserRole",
    "AccountStatus",
    "AdvertisementType",
    "AdvertisementMediaType",
    "AdvertisementPlacement",
    "ListingCondition",
    "ListingStatus",
    "ListingVisibility",
    "ReviewStatus",
    "ConversationStatus",
    "MessageType",
    "OfferStatus",
    "NotificationType",
    "RelatedEntityType",
    "VerificationPurpose",
    "StudentVerificationStatus",
    "VerificationHistoryAction",
    "ReportEntityType",
    "ReportReason",
    "ReportStatus",
    "SubscriptionStatus",
    "PaymentStatus",
    "PremiumRequestStatus",
    # Auth models
    "User",
    "UserProfile",
    "EmailVerification",
    "PasswordResetToken",
    "StudentVerificationHistory",
    "TemporaryRegistration",
    "TrustedDevice",
    "SecurityEvent",
    # Marketplace models
    "Category",
    "Listing",
    "ListingImage",
    "Favorite",
    "ListingView",
    # Chat models
    "Conversation",
    "Message",
    "Offer",
    # Trust system models
    "CompletedTransaction",
    "Review",
    "UserReputation",
    # Notification models
    "Notification",
    # Activity feed
    "ActivityEvent",
    # Moderation models
    "Report",
    # Advertisement analytics
    "RewardedAdEvent",
    # Administration models
    "Advertisement",
    "AdminAuditLog",
    "Subscription",
    "PremiumRequest",
    "PremiumPaymentSettings",
    "PremiumPlan",
    "PremiumFeature",
]
