import type { AnalyticsEventProperties, AnalyticsService } from './analytics-service';

/**
 * No-op Analytics Service Implementation.
 *
 * This service implements the AnalyticsService interface but does nothing.
 * It's used as a fallback when analytics are disabled or not configured.
 *
 * @example
 * ```typescript
 * // Service creation (usually done by create-services.ts)
 * const service = new NoopAnalyticsService();
 *
 * // These calls do nothing but are safe to execute
 * service.track('button_click', { button_id: 'cta' });
 * service.trackPageview('/products/123');
 * ```
 *
 * @example
 * ```typescript
 * // Automatic fallback in create-services.ts
 * const umamiEnabled = Boolean(process.env.UMAMI_WEBSITE_ID);
 * const analytics = umamiEnabled
 *   ? new UmamiAnalyticsService({ enabled: true })
 *   : new NoopAnalyticsService(); // Fallback when no website ID
 * ```
 */
export class NoopAnalyticsService implements AnalyticsService {
  /**
   * No-op implementation of track.
   *
   * This method does nothing but maintains the same signature as other
   * analytics services for consistency.
   *
   * @param _eventName - Event name (ignored)
   * @param _props - Event properties (ignored)
   *
   * @example
   * ```typescript
   * // Safe to call even when analytics are disabled
   * service.track('button_click', { button_id: 'cta' });
   * // No error, no action taken
   * ```
   */
  track(_eventName: string, _props?: AnalyticsEventProperties) {
    // intentionally noop - analytics are disabled
  }

  /**
   * No-op implementation of trackPageview.
   *
   * This method does nothing but maintains the same signature as other
   * analytics services for consistency.
   *
   * @param _url - URL to track (ignored)
   *
   * @example
   * ```typescript
   * // Safe to call even when analytics are disabled
   * service.trackPageview('/products/123');
   * // No error, no action taken
   * ```
   */
  trackPageview(_url?: string) {
    // intentionally noop - analytics are disabled
  }
}
