import { useParameterStore } from '@statsig/react-bindings';

import { useAnalyticsContext } from '@/context/AnalyticsContext';
import { SubscriptionPeriod } from '@/utils/session';

/**
 * Hook to get the default billing period based on user's country
 *
 * Uses Statsig Parameter Store for dynamic configuration:
 * - Parameter Store: `pricing-defaults`
 * - Country-specific parameters: `pricing-period-default-{COUNTRY}` (e.g., pricing-period-default-IN)
 * - Fallback parameter: `pricing-period-default-GLOBAL`
 *
 * Each parameter can be:
 * - A static value ("monthly" or "yearly")
 * - Backed by an experiment for A/B testing
 *
 * Priority:
 * 1. Country-specific parameter (e.g., pricing-period-default-IN)
 * 2. Global fallback parameter (pricing-period-default-GLOBAL)
 * 3. Hardcoded SubscriptionPeriod.Annual
 *
 * @returns The default subscription period (Monthly or Annual)
 */
export function useDefaultBillingPeriod(): SubscriptionPeriod {
  const { country } = useAnalyticsContext();
  const store = useParameterStore('pricing-defaults');

  // 1. Try country-specific parameter first
  if (country) {
    const countryParam = `pricing-period-default-${country.toUpperCase()}`;
    const countryValue = store.get(countryParam, null);

    if (countryValue) {
      return countryValue === 'yearly'
        ? SubscriptionPeriod.Annual
        : SubscriptionPeriod.Monthly;
    }
  }

  // 2. Fall back to DEFAULT parameter
  const defaultValue = store.get('pricing-period-default-GLOBAL', null);

  if (defaultValue) {
    return defaultValue === 'yearly'
      ? SubscriptionPeriod.Annual
      : SubscriptionPeriod.Monthly;
  }

  // 3. Final fallback to hardcoded value
  return SubscriptionPeriod.Annual;
}
