/**
 * Prediction Queue Types
 * Senior Level Strict Typing
 */

export const PREDICTIONS_QUEUE = "predictions-queue";

export enum PredictionJobType {
  PREDICT_MATCH = "predict-match",
  SMART_COUPON = "smart-coupon",
}

export interface PredictMatchJobData {
  matchId: string;
  forceUpdate?: boolean;
  simulate?: boolean;
  is_simulation?: boolean;
  pre_match_only?: boolean;
}

export interface SmartCouponJobData {
  matchIds: string[];
  strategy: string;
  options?: {
    maxMatches?: number;
    minConfidence?: number;
  };
}

export type PredictionJob =
  | { type: PredictionJobType.PREDICT_MATCH; data: PredictMatchJobData }
  | { type: PredictionJobType.SMART_COUPON; data: SmartCouponJobData };
