"""
SQLAlchemy models package.
Import all models here for easy access and Alembic detection.
"""
from app.models.base import BaseModel
from app.models.user import User, UserRole, user_establishments
from app.models.establishment import Establishment
from app.models.department import Department
from app.models.room import RoomType, Room, RoomStatus
from app.models.client import Client
from app.models.reservation import Reservation, ReservationStatus
from app.models.folio import Folio, FolioItem, FolioStatus
from app.models.payment import Payment, PaymentMethod
from app.models.stats import DailyStats, TaxRate
from app.models.notification import (
    Notification,
    NotificationSetting,
    NotificationType,
    NotificationTemplate,
    NotificationStatus
)
from app.models.budget import (
    Budget,
    BudgetLine,
    BudgetPeriod,
    BudgetStatus,
    BudgetLineType,
    VarianceAnalysis
)
from app.models.document import Document, DocumentType
from app.models.waitlist import Waitlist, WaitlistStatus, WaitlistPriority
from app.models.loyalty import (
    LoyaltyMembership,
    LoyaltyTier,
    PointTransaction,
    PointTransactionType,
    LoyaltyReward
)
from app.models.expense import (
    Expense,
    ExpenseAttachment,
    ExpenseCategory,
    ExpenseStatus
)

__all__ = [
    "BaseModel",
    "User",
    "UserRole",
    "user_establishments",
    "Establishment",
    "Department",
    "RoomType",
    "Room",
    "RoomStatus",
    "Client",
    "Reservation",
    "ReservationStatus",
    "Folio",
    "FolioItem",
    "FolioStatus",
    "Payment",
    "PaymentMethod",
    "DailyStats",
    "TaxRate",
    "Notification",
    "NotificationSetting",
    "NotificationType",
    "NotificationTemplate",
    "NotificationStatus",
    "Budget",
    "BudgetLine",
    "BudgetPeriod",
    "BudgetStatus",
    "BudgetLineType",
    "VarianceAnalysis",
    "Document",
    "DocumentType",
    "Waitlist",
    "WaitlistStatus",
    "WaitlistPriority",
    "LoyaltyMembership",
    "LoyaltyTier",
    "PointTransaction",
    "PointTransactionType",
    "LoyaltyReward",
    "Expense",
    "ExpenseAttachment",
    "ExpenseCategory",
    "ExpenseStatus",
]
