import { IsArray, IsString, IsOptional, IsNotEmpty, IsNumber, IsEnum, ArrayMaxSize, Min, Max, } from "class-validator"; import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; export enum CouponStrategyEnum { SAFE = "SAFE", BALANCED = "BALANCED", AGGRESSIVE = "AGGRESSIVE", VALUE = "VALUE", MIRACLE = "MIRACLE", } export class AnalyzeMatchDto { @ApiProperty({ description: "Match ID to analyze" }) @IsString() @IsNotEmpty() matchId: string; } export class DailyBankoDto { @ApiPropertyOptional({ description: "Optional match IDs — system fetches if empty", example: ["match-1", "match-2"], }) @IsOptional() @IsArray() @IsString({ each: true }) @ArrayMaxSize(50) matchIds?: string[]; } export class SuggestCouponDto { @ApiPropertyOptional({ description: "Match IDs — system fetches if empty", example: ["match-1", "match-2"], }) @IsOptional() @IsArray() @IsString({ each: true }) @ArrayMaxSize(50) matchIds?: string[]; @ApiPropertyOptional({ enum: CouponStrategyEnum, default: CouponStrategyEnum.BALANCED, }) @IsOptional() @IsEnum(CouponStrategyEnum) strategy?: CouponStrategyEnum; @ApiPropertyOptional({ description: "Maximum matches in coupon", example: 5 }) @IsOptional() @IsNumber() @Min(1) @Max(20) maxMatches?: number; @ApiPropertyOptional({ description: "Minimum confidence threshold (0-100)", example: 60, }) @IsOptional() @IsNumber() @Min(0) @Max(100) minConfidence?: number; }