# app/modules/loyalty/config.py
"""
Module configuration.

Environment-based configuration using Pydantic Settings.
Settings are loaded from environment variables with LOYALTY_ prefix.

Example:
    LOYALTY_DEFAULT_COOLDOWN_MINUTES=15
    LOYALTY_MAX_DAILY_STAMPS=5
    LOYALTY_GOOGLE_ISSUER_ID=3388000000012345678

Usage:
    from app.modules.loyalty.config import config
    cooldown = config.default_cooldown_minutes
"""
from pydantic_settings import BaseSettings


class ModuleConfig(BaseSettings):
    """Configuration for loyalty module."""

    # Default anti-fraud settings
    default_cooldown_minutes: int = 15
    max_daily_stamps: int = 5
    pin_max_failed_attempts: int = 5
    pin_lockout_minutes: int = 30

    # Points configuration
    default_points_per_euro: int = 10  # 10 points per euro spent

    # Apple Wallet
    apple_pass_type_id: str | None = None
    apple_team_id: str | None = None
    apple_wwdr_cert_path: str | None = None  # Apple WWDR certificate
    apple_signer_cert_path: str | None = None  # Pass signing certificate
    apple_signer_key_path: str | None = None  # Pass signing key

    # Google Wallet
    google_issuer_id: str | None = None
    google_service_account_json: str | None = None  # Path to service account JSON
    google_wallet_origins: list[str] = []  # Allowed origins for save-to-wallet JWT
    default_logo_url: str = "https://rewardflow.lu/static/modules/loyalty/shared/img/default-logo-200.png"

    # QR code settings
    qr_code_size: int = 300  # pixels

    model_config = {"env_prefix": "LOYALTY_", "env_file": ".env", "extra": "ignore"}


# Export for auto-discovery
config_class = ModuleConfig
config = ModuleConfig()
