import { BaseApiClient } from '../base/BaseApiClient';
import type {
  RecordPageViewInputDto,
  RecordPageViewOutputDto,
  RecordEngagementInputDto,
  RecordEngagementOutputDto,
  AnalyticsDashboardDto,
  AnalyticsMetricsDto,
} from '../../dtos';

/**
 * Analytics API Client
 *
 * Handles all analytics-related API operations.
 */
export class AnalyticsApiClient extends BaseApiClient {
  /** Record a page view */
  recordPageView(input: RecordPageViewInputDto): Promise<RecordPageViewOutputDto> {
    return this.post<RecordPageViewOutputDto>('/analytics/page-view', input);
  }

  /** Record an engagement event */
  recordEngagement(input: RecordEngagementInputDto): Promise<RecordEngagementOutputDto> {
    return this.post<RecordEngagementOutputDto>('/analytics/engagement', input);
  }

  /** Get analytics dashboard data */
  getDashboardData(): Promise<AnalyticsDashboardDto> {
    return this.get<AnalyticsDashboardDto>('/analytics/dashboard');
  }

  /** Get analytics metrics */
  getAnalyticsMetrics(): Promise<AnalyticsMetricsDto> {
    return this.get<AnalyticsMetricsDto>('/analytics/metrics');
  }
}