"""
Central models module - imports from feature-based modules
This maintains backward compatibility while using the new structure
"""

# Auth models
from ..auth.models.role import Role
from ..auth.models.user import User
from ..auth.models.refresh_token import RefreshToken
from ..auth.models.password_reset_token import PasswordResetToken
from ..auth.models.admin_session import AdminSession, AdminActivityLog

# Room models
from ..rooms.models.room_type import RoomType
from ..rooms.models.room import Room
from ..rooms.models.room_attribute import RoomAttribute
from ..rooms.models.room_maintenance import RoomMaintenance, MaintenanceType, MaintenanceStatus
from ..rooms.models.room_inspection import RoomInspection, InspectionType, InspectionStatus
from ..rooms.models.rate_plan import RatePlan, RatePlanRule, RatePlanType, RatePlanStatus

# Hotel Services models
from ..hotel_services.models.housekeeping_task import HousekeepingTask, HousekeepingStatus, HousekeepingType
from ..hotel_services.models.inventory_item import InventoryItem, InventoryCategory, InventoryUnit
from ..hotel_services.models.inventory_transaction import InventoryTransaction, TransactionType
from ..hotel_services.models.inventory_reorder_request import InventoryReorderRequest, ReorderStatus
from ..hotel_services.models.inventory_task_consumption import InventoryTaskConsumption

# Booking models
from ..bookings.models.booking import Booking
from ..bookings.models.checkin_checkout import CheckInCheckOut
from ..bookings.models.group_booking import GroupBooking, GroupBookingMember, GroupRoomBlock, GroupPayment, GroupBookingStatus, PaymentOption

# Payment models
from ..payments.models.payment import Payment
from ..payments.models.invoice import Invoice, InvoiceItem
from ..payments.models.financial_audit_trail import FinancialAuditTrail, FinancialActionType
from ..payments.models.financial_approval import FinancialApproval, ApprovalStatus, ApprovalActionType
from ..payments.models.reconciliation_exception import ReconciliationException, ExceptionStatus, ExceptionType
from ..payments.models.accountant_session import AccountantSession, AccountantActivityLog
from ..payments.models.chart_of_accounts import ChartOfAccounts, AccountType, AccountCategory
from ..payments.models.fiscal_period import FiscalPeriod, PeriodStatus
from ..payments.models.journal_entry import JournalEntry, JournalLine, JournalEntryStatus

# Guest management models
from ..guest_management.models.guest_complaint import GuestComplaint, ComplaintUpdate, ComplaintStatus, ComplaintPriority, ComplaintCategory

# Hotel Services models
from ..hotel_services.models.service import Service
from ..hotel_services.models.service_usage import ServiceUsage
from ..hotel_services.models.service_booking import ServiceBooking, ServiceBookingItem, ServicePayment, ServiceBookingStatus, ServicePaymentStatus, ServicePaymentMethod
from ..hotel_services.models.housekeeping_task import HousekeepingTask, HousekeepingStatus, HousekeepingType
from ..hotel_services.models.inventory_item import InventoryItem, InventoryCategory, InventoryUnit
from ..hotel_services.models.inventory_transaction import InventoryTransaction, TransactionType
from ..hotel_services.models.inventory_reorder_request import InventoryReorderRequest, ReorderStatus
from ..hotel_services.models.inventory_task_consumption import InventoryTaskConsumption
from ..hotel_services.models.guest_request import GuestRequest, RequestType, RequestStatus, RequestPriority
from ..hotel_services.models.staff_shift import StaffShift, StaffTask, ShiftType, ShiftStatus, StaffTaskPriority, StaffTaskStatus

# Content models
from ..content.models.banner import Banner
from ..content.models.blog import BlogPost
from ..content.models.page_content import PageContent, PageType
from ..content.models.cookie_policy import CookiePolicy
from ..content.models.cookie_integration_config import CookieIntegrationConfig

# Review models
from ..reviews.models.review import Review
from ..reviews.models.favorite import Favorite

# Analytics models
from ..analytics.models.audit_log import AuditLog

# System models
from ..system.models.system_settings import SystemSettings
from ..system.models.workflow import Workflow, WorkflowInstance, Task, TaskComment, WorkflowType, WorkflowStatus, WorkflowTrigger, TaskStatus, TaskPriority

# AI models
from ..ai.models.chat import Chat, ChatMessage, ChatStatus
from ..ai.models.ai_conversation import (
    AIConversation, AIConversationFeedback, AILearnedPattern,
    AIKnowledgeEntry, AITrainingMetrics
)

# Loyalty models
from ..loyalty.models.loyalty_tier import LoyaltyTier, TierLevel
from ..loyalty.models.user_loyalty import UserLoyalty
from ..loyalty.models.loyalty_point_transaction import LoyaltyPointTransaction, TransactionType, TransactionSource
from ..loyalty.models.loyalty_reward import LoyaltyReward, RewardType, RewardStatus
from ..loyalty.models.reward_redemption import RewardRedemption, RedemptionStatus
from ..loyalty.models.referral import Referral, ReferralStatus
from ..loyalty.models.promotion import Promotion
from ..loyalty.models.package import Package, PackageItem, PackageStatus, PackageItemType

# Guest Management models
from ..guest_management.models.guest_preference import GuestPreference
from ..guest_management.models.guest_note import GuestNote
from ..guest_management.models.guest_tag import GuestTag, guest_tag_association
from ..guest_management.models.guest_communication import GuestCommunication, CommunicationType, CommunicationDirection
from ..guest_management.models.guest_segment import GuestSegment, guest_segment_association

# Notification models
from ..notifications.models.notification import Notification, NotificationTemplate, NotificationPreference, NotificationDeliveryLog, NotificationChannel, NotificationStatus, NotificationType
from ..notifications.models.email_campaign import Campaign, CampaignStatus, CampaignType, CampaignSegment, EmailTemplate, CampaignEmail, EmailStatus, EmailClick, DripSequence, DripSequenceStep, DripSequenceEnrollment, Unsubscribe

# Security models
from ..security.models.security_event import SecurityEvent, SecurityEventType, SecurityEventSeverity, IPWhitelist, IPBlacklist, OAuthProvider, OAuthToken
from ..security.models.gdpr_compliance import DataSubjectRequest, DataSubjectRequestType, DataSubjectRequestStatus, DataRetentionPolicy, ConsentRecord

# Integration models
from ..integrations.models.api_key import APIKey
from ..integrations.models.webhook import Webhook, WebhookDelivery, WebhookEventType, WebhookStatus, WebhookDeliveryStatus

__all__ = [
    # Auth
    'Role', 'User', 'RefreshToken', 'PasswordResetToken', 'AdminSession', 'AdminActivityLog',
    # Rooms
    'RoomType', 'Room', 'RoomAttribute', 'RoomMaintenance', 'MaintenanceType', 'MaintenanceStatus',
    'RoomInspection', 'InspectionType', 'InspectionStatus', 'RatePlan', 'RatePlanRule', 'RatePlanType', 'RatePlanStatus',
    # Bookings
    'Booking', 'CheckInCheckOut', 'GroupBooking', 'GroupBookingMember', 'GroupRoomBlock', 'GroupPayment', 'GroupBookingStatus', 'PaymentOption',
    # Payments
    'Payment', 'Invoice', 'InvoiceItem',
    'FinancialAuditTrail', 'FinancialActionType',
    'FinancialApproval', 'ApprovalStatus', 'ApprovalActionType',
    'ReconciliationException', 'ExceptionStatus', 'ExceptionType',
    'AccountantSession', 'AccountantActivityLog',
    'ChartOfAccounts', 'AccountType', 'AccountCategory',
    'FiscalPeriod', 'PeriodStatus',
    'JournalEntry', 'JournalLine', 'JournalEntryStatus',
    # Hotel Services
    'Service', 'ServiceUsage', 'ServiceBooking', 'ServiceBookingItem', 'ServicePayment', 'ServiceBookingStatus', 'ServicePaymentStatus', 'ServicePaymentMethod',
    'HousekeepingTask', 'HousekeepingStatus', 'HousekeepingType',
    'InventoryItem', 'InventoryCategory', 'InventoryUnit',
    'InventoryTransaction', 'TransactionType',
    'InventoryReorderRequest', 'ReorderStatus',
    'InventoryTaskConsumption',
    'GuestRequest', 'RequestType', 'RequestStatus', 'RequestPriority',
    'StaffShift', 'StaffTask', 'ShiftType', 'ShiftStatus', 'StaffTaskPriority', 'StaffTaskStatus',
    # Content
    'Banner', 'BlogPost', 'PageContent', 'PageType', 'CookiePolicy', 'CookieIntegrationConfig',
    # Reviews
    'Review', 'Favorite',
    # Analytics
    'AuditLog',
    # System
    'SystemSettings', 'Workflow', 'WorkflowInstance', 'Task', 'TaskComment', 'WorkflowType', 'WorkflowStatus', 'WorkflowTrigger', 'TaskStatus', 'TaskPriority',
    # AI
    'Chat', 'ChatMessage', 'ChatStatus', 'AIConversation', 'AIConversationFeedback', 'AILearnedPattern', 'AIKnowledgeEntry', 'AITrainingMetrics',
    # Loyalty
    'LoyaltyTier', 'TierLevel', 'UserLoyalty', 'LoyaltyPointTransaction', 'TransactionType', 'TransactionSource',
    'LoyaltyReward', 'RewardType', 'RewardStatus', 'RewardRedemption', 'RedemptionStatus', 'Referral', 'ReferralStatus',
    'Promotion', 'Package', 'PackageItem', 'PackageStatus', 'PackageItemType',
    # Guest Management
    'GuestPreference', 'GuestNote', 'GuestTag', 'guest_tag_association', 'GuestCommunication', 'CommunicationType', 'CommunicationDirection',
    'GuestSegment', 'guest_segment_association', 'GuestComplaint', 'ComplaintUpdate', 'ComplaintStatus', 'ComplaintPriority', 'ComplaintCategory',
    # Notifications
    'Notification', 'NotificationTemplate', 'NotificationPreference', 'NotificationDeliveryLog', 'NotificationChannel', 'NotificationStatus', 'NotificationType',
    'Campaign', 'CampaignStatus', 'CampaignType', 'CampaignSegment', 'EmailTemplate', 'CampaignEmail', 'EmailStatus', 'EmailClick',
    'DripSequence', 'DripSequenceStep', 'DripSequenceEnrollment', 'Unsubscribe',
    # Security
    'SecurityEvent', 'SecurityEventType', 'SecurityEventSeverity', 'IPWhitelist', 'IPBlacklist', 'OAuthProvider', 'OAuthToken',
    'DataSubjectRequest', 'DataSubjectRequestType', 'DataSubjectRequestStatus', 'DataRetentionPolicy', 'ConsentRecord',
    # Integrations
    'APIKey', 'Webhook', 'WebhookDelivery', 'WebhookEventType', 'WebhookStatus', 'WebhookDeliveryStatus',
]
