# app/modules/loyalty/schemas/__init__.py
"""
Loyalty module Pydantic schemas.

Request and response models for the loyalty API endpoints.

Usage:
    from app.modules.loyalty.schemas import (
        # Program
        ProgramCreate,
        ProgramUpdate,
        ProgramResponse,
        # Card
        CardEnrollRequest,
        CardResponse,
        # Stamp
        StampRequest,
        StampResponse,
        # Points
        PointsEarnRequest,
        PointsRedeemRequest,
        # PIN
        PinCreate,
        PinVerifyRequest,
    )
"""

from app.modules.loyalty.schemas.card import (
    CardDetailResponse,
    # Card operations
    CardEnrollRequest,
    CardListResponse,
    CardLookupResponse,
    CardResponse,
    TransactionListResponse,
    # Transactions
    TransactionResponse,
)
from app.modules.loyalty.schemas.pin import (
    # Staff PIN
    PinCreate,
    PinCreateForMerchant,
    PinDetailListResponse,
    PinDetailResponse,
    PinForDeviceListResponse,
    PinForDeviceResponse,
    PinListResponse,
    PinResponse,
    PinUpdate,
    PinVerifyRequest,
    PinVerifyResponse,
)
from app.modules.loyalty.schemas.points import (
    PointsAdjustRequest,
    PointsAdjustResponse,
    # Points operations
    PointsEarnRequest,
    PointsEarnResponse,
    PointsRedeemRequest,
    PointsRedeemResponse,
    PointsVoidRequest,
    PointsVoidResponse,
)
from app.modules.loyalty.schemas.program import (
    # Merchant settings
    MerchantSettingsResponse,
    MerchantSettingsUpdate,
    MerchantStatsResponse,
    # Points rewards
    PointsRewardConfig,
    # Program CRUD
    ProgramCreate,
    ProgramListResponse,
    ProgramResponse,
    # Stats
    ProgramStatsResponse,
    ProgramUpdate,
    TierConfig,
)
from app.modules.loyalty.schemas.stamp import (
    StampRedeemRequest,
    StampRedeemResponse,
    # Stamp operations
    StampRequest,
    StampResponse,
    StampVoidRequest,
    StampVoidResponse,
)
from app.modules.loyalty.schemas.terminal_device import (
    # Terminal device pairing & management
    TerminalDeviceCreate,
    TerminalDeviceListResponse,
    TerminalDevicePairingResponse,
    TerminalDeviceResponse,
    TerminalDeviceRevoke,
    TerminalDeviceUpdate,
)

__all__ = [
    # Program
    "ProgramCreate",
    "ProgramUpdate",
    "ProgramResponse",
    "ProgramListResponse",
    "PointsRewardConfig",
    "TierConfig",
    "ProgramStatsResponse",
    "MerchantStatsResponse",
    "MerchantSettingsResponse",
    "MerchantSettingsUpdate",
    # Card
    "CardEnrollRequest",
    "CardResponse",
    "CardDetailResponse",
    "CardListResponse",
    "CardLookupResponse",
    "TransactionResponse",
    "TransactionListResponse",
    # Stamp
    "StampRequest",
    "StampResponse",
    "StampRedeemRequest",
    "StampRedeemResponse",
    "StampVoidRequest",
    "StampVoidResponse",
    # Points
    "PointsEarnRequest",
    "PointsEarnResponse",
    "PointsRedeemRequest",
    "PointsRedeemResponse",
    "PointsVoidRequest",
    "PointsVoidResponse",
    "PointsAdjustRequest",
    "PointsAdjustResponse",
    # PIN
    "PinCreate",
    "PinCreateForMerchant",
    "PinUpdate",
    "PinResponse",
    "PinForDeviceResponse",
    "PinForDeviceListResponse",
    "PinDetailResponse",
    "PinListResponse",
    "PinDetailListResponse",
    "PinVerifyRequest",
    "PinVerifyResponse",
    # Terminal device
    "TerminalDeviceCreate",
    "TerminalDeviceUpdate",
    "TerminalDeviceRevoke",
    "TerminalDeviceResponse",
    "TerminalDevicePairingResponse",
    "TerminalDeviceListResponse",
]
