import { FeatureFlagConfig } from './feature-types';

/**
 * Feature flag configuration for all environments
 * 
 * ARCHITECTURE: API-Driven Features
 * - All feature control comes from the API /features endpoint
 * - FeatureFlagService fetches and caches features
 * - Components use FeatureFlagService or ModeGuard for conditional rendering
 * 
 * FEATURE STATES - DETAILED EXPLANATION:
 * 
 * 'enabled' = Feature is fully available to users
 *   - Visible in UI
 *   - Fully functional
 *   - No restrictions
 *   - Example: "Users can create leagues"
 * 
 * 'disabled' = Feature is turned off for everyone
 *   - Not visible in UI (or shown as unavailable)
 *   - Non-functional
 *   - Users cannot access it
 *   - Use when: Feature is broken, not ready, or intentionally removed
 *   - Example: "Sponsor management disabled due to bug"
 * 
 * 'coming_soon' = Feature is visible but not yet available
 *   - Visible in UI with "Coming Soon" badge
 *   - Shows users what's coming
 *   - Builds anticipation
 *   - Use when: Feature is in development, users should know about it
 *   - Example: "New UI coming soon" - users see it but can't use it
 * 
 * 'hidden' = Feature is completely invisible
 *   - Not shown in UI at all
 *   - No user knows it exists
 *   - Use when: Feature is experimental, internal-only, or not ready for ANY visibility
 *   - Example: "Experimental AI feature" - only devs know it exists
 * 
 * DECISION TREE:
 * - Should users see this feature exists? 
 *   - NO → 'hidden' or 'disabled'
 *   - YES → Should they be able to use it?
 *     - NO → 'coming_soon'
 *     - YES → 'enabled'
 * 
 * REAL-WORLD EXAMPLES:
 * - 'enabled': Dashboard, leagues, teams (core features working)
 * - 'disabled': Sponsor management (broken, don't show anything)
 * - 'coming_soon': New UI redesign (users see "coming soon" banner)
 * - 'hidden': Experimental chat feature (internal testing only)
 */
export const featureConfig: FeatureFlagConfig = {
  // Development environment - all features enabled for testing
  development: {
    // Core platform features
    platform: {
      dashboard: 'enabled',
      leagues: 'enabled',
      teams: 'enabled',
      drivers: 'enabled',
      races: 'enabled',
      leaderboards: 'enabled',
    },
    // Authentication & onboarding
    auth: {
      signup: 'enabled',
      login: 'enabled',
      forgotPassword: 'enabled',
      resetPassword: 'enabled',
    },
    onboarding: {
      wizard: 'enabled',
    },
    // Sponsor features
    sponsors: {
      portal: 'enabled',
      dashboard: 'enabled',
      management: 'enabled',
      campaigns: 'enabled',
      billing: 'enabled',
    },
    // Admin features
    admin: {
      dashboard: 'enabled',
      userManagement: 'enabled',
      analytics: 'enabled',
    },
    // Beta features for testing
    beta: {
      newUI: 'enabled',
      experimental: 'coming_soon',
    },
  },

  // Test environment - all features enabled for automated tests
  test: {
    platform: {
      dashboard: 'enabled',
      leagues: 'enabled',
      teams: 'enabled',
      drivers: 'enabled',
      races: 'enabled',
      leaderboards: 'enabled',
    },
    auth: {
      signup: 'enabled',
      login: 'enabled',
      forgotPassword: 'enabled',
      resetPassword: 'enabled',
    },
    onboarding: {
      wizard: 'enabled',
    },
    sponsors: {
      portal: 'enabled',
      dashboard: 'enabled',
      management: 'enabled',
      campaigns: 'enabled',
      billing: 'enabled',
    },
    admin: {
      dashboard: 'enabled',
      userManagement: 'enabled',
      analytics: 'enabled',
    },
    beta: {
      newUI: 'disabled',
      experimental: 'disabled',
    },
  },

  // Staging environment - controlled feature rollout
  staging: {
    // Core platform features
    platform: {
      dashboard: 'enabled',
      leagues: 'enabled',
      teams: 'enabled',
      drivers: 'enabled',
      races: 'enabled',
      leaderboards: 'enabled',
    },
    // Authentication & onboarding
    auth: {
      signup: 'enabled',
      login: 'enabled',
      forgotPassword: 'enabled',
      resetPassword: 'enabled',
    },
    onboarding: {
      wizard: 'enabled',
    },
    // Sponsor features (gradual rollout)
    sponsors: {
      portal: 'enabled',
      dashboard: 'enabled',
      management: 'coming_soon', // Ready for testing but not fully rolled out
      campaigns: 'enabled',
      billing: 'enabled',
    },
    // Admin features
    admin: {
      dashboard: 'enabled',
      userManagement: 'enabled',
      analytics: 'enabled',
    },
    // Beta features (controlled rollout)
    beta: {
      newUI: 'coming_soon', // Ready for testing but not fully rolled out
      experimental: 'hidden',
    },
  },

  // Production environment - stable features only
  production: {
    // Core platform features (stable)
    platform: {
      dashboard: 'enabled',
      leagues: 'enabled',
      teams: 'enabled',
      drivers: 'enabled',
      races: 'enabled',
      leaderboards: 'enabled',
    },
    // Authentication & onboarding (stable)
    auth: {
      signup: 'enabled',
      login: 'enabled',
      forgotPassword: 'enabled',
      resetPassword: 'enabled',
    },
    onboarding: {
      wizard: 'enabled',
    },
    // Sponsor features (gradual rollout)
    sponsors: {
      portal: 'enabled',
      dashboard: 'enabled',
      management: 'disabled', // Feature not ready yet
      campaigns: 'enabled',
      billing: 'enabled',
    },
    // Admin features (stable)
    admin: {
      dashboard: 'enabled',
      userManagement: 'enabled',
      analytics: 'disabled', // Feature not ready yet
    },
    // Beta features (controlled rollout)
    beta: {
      newUI: 'disabled', // Not ready for production
      experimental: 'hidden',
    },
  },
};