/**
 * Type definition for analytics event properties.
 */
export type AnalyticsEventProperties = Record<
  string,
  string | number | boolean | null | undefined
>;

/**
 * Interface for analytics service implementations.
 *
 * This interface defines the contract for all analytics services,
 * allowing for different implementations (Umami, Google Analytics, etc.)
 * while maintaining a consistent API.
 */
export interface AnalyticsService {
  /**
   * Track a custom event with optional properties.
   *
   * @param eventName - The name of the event to track
   * @param props - Optional event properties (metadata)
   */
  track(eventName: string, props?: AnalyticsEventProperties): void;

  /**
   * Track a pageview.
   *
   * @param url - The URL to track (defaults to current location)
   */
  trackPageview(url?: string): void;
}
