/** * AnalyticsRepository - CRUD operations for analytics data * * Provides type-safe access to: * - Usage event tracking * - Experiment management * - ROI metrics storage * - Value attribution */ import type { Database as DatabaseType } from '../db/database-interface.js'; import type { UsageEvent, UsageEventInput, Experiment, ExperimentInput, ExperimentAssignment, ExperimentOutcome, OutcomeInput, ROIMetrics, ExperimentVariant, ExperimentStatus } from './types.js'; export type { UsageEventRow, ExperimentRow, ExperimentAssignmentRow, ExperimentOutcomeRow, ROIMetricsRow, } from './AnalyticsRepository.types.js'; /** * Repository for analytics operations */ export declare class AnalyticsRepository { private db; constructor(db: DatabaseType); /** * Record a skill usage event * SMI-992: Explicitly set timestamp from JS Date for fake timer compatibility */ recordUsageEvent(input: UsageEventInput): UsageEvent; /** * Get a usage event by ID */ getUsageEvent(id: string): UsageEvent | null; /** * Get usage events for a skill within a time period */ getUsageEventsForSkill(skillId: string, startDate: string, endDate: string): UsageEvent[]; /** * Get usage events for a user */ getUsageEventsForUser(userId: string, startDate: string, endDate: string): UsageEvent[]; /** * Get all usage events within a time period */ getAllUsageEvents(startDate: string, endDate: string): UsageEvent[]; /** * Delete usage events older than the retention period (30 days default) */ cleanupOldEvents(retentionDays?: number): number; /** * Create a new experiment */ createExperiment(input: ExperimentInput): Experiment; /** * Get an experiment by ID */ getExperiment(id: string): Experiment | null; /** * Get experiment by name */ getExperimentByName(name: string): Experiment | null; /** * Update experiment status */ updateExperimentStatus(id: string, status: ExperimentStatus): boolean; /** * Get all active experiments */ getActiveExperiments(): Experiment[]; /** * Assign a user to an experiment variant */ assignUserToExperiment(experimentId: string, userId: string, variant: ExperimentVariant): ExperimentAssignment; /** * Get user's assignment for an experiment */ getUserAssignment(experimentId: string, userId: string): ExperimentAssignment | null; /** * Get all assignments for an experiment */ getExperimentAssignments(experimentId: string): ExperimentAssignment[]; /** * Record an experiment outcome */ recordOutcome(input: OutcomeInput): ExperimentOutcome; /** * Get outcomes for an experiment */ getExperimentOutcomes(experimentId: string): ExperimentOutcome[]; /** * Store computed ROI metrics */ storeROIMetrics(metrics: Omit): ROIMetrics; /** * Get ROI metrics for a period */ getROIMetrics(metricType: string, startDate: string, endDate: string): ROIMetrics[]; /** * Get ROI metrics for a specific entity (user or skill) */ getEntityROIMetrics(entityId: string, startDate: string, endDate: string): ROIMetrics[]; } //# sourceMappingURL=AnalyticsRepository.d.ts.map