| import { z } from "zod"; | |
| export const generateAdSchema = z.object({ | |
| niche: z.enum(["home_insurance", "glp1", "auto_insurance"]), | |
| num_images: z.number().min(1).max(10), | |
| image_model: z.string().optional().nullable(), | |
| target_audience: z.string().optional().nullable(), | |
| offer: z.string().optional().nullable(), | |
| use_trending: z.boolean().optional(), | |
| trending_context: z.string().optional().nullable(), | |
| }); | |
| export const generateBatchSchema = z.object({ | |
| niche: z.enum(["home_insurance", "glp1", "auto_insurance"]), | |
| count: z.number().min(1).max(100), | |
| image_model: z.string().optional().nullable(), | |
| target_audience: z.string().optional().nullable(), | |
| offer: z.string().optional().nullable(), | |
| }); | |
| export const generateMatrixSchema = z.object({ | |
| niche: z.enum(["home_insurance", "glp1", "auto_insurance"]), | |
| angle_key: z.string().optional().nullable(), | |
| concept_key: z.string().optional().nullable(), | |
| num_images: z.number().min(1).max(5), | |
| image_model: z.string().optional().nullable(), | |
| target_audience: z.string().optional().nullable(), | |
| offer: z.string().optional().nullable(), | |
| }); | |
| export const testingMatrixSchema = z.object({ | |
| niche: z.enum(["home_insurance", "glp1", "auto_insurance"]), | |
| angle_count: z.number().min(1).max(10), | |
| concept_count: z.number().min(1).max(10), | |
| strategy: z.enum(["balanced", "top_performers", "diverse"]), | |
| }); | |