import { z } from "zod"; const intensity = z.enum(["mild", "moderate", "strong"]); const confidence = z.enum(["high", "medium", "low"]); export const ratingExplainedSchema = z.object({ officialRating: z.string(), region: z.string(), summary: z.string(), factors: z.array( z.object({ category: z.enum([ "violence", "language", "sexuality", "substances", "frightening", "other", ]), intensity, description: z.string(), approximateTiming: z.string().optional(), confidence: confidence.optional(), }), ), borderlineNote: z.string().optional(), }); export const skipGuideSchema = z.object({ originalRating: z.string(), suggestedAudienceAge: z.number().int().min(0).max(21), totalSkippedMinutes: z.number().int().min(0), segments: z.array( z.object({ start: z.string(), end: z.string(), reason: z.string(), intensity, plotImpact: z.enum(["none", "minor", "significant"]), skipRecommendation: z.enum(["recommended", "optional", "do_not_skip"]), resumeHint: z.string(), }), ), disclaimer: z.string(), }); export const sensitivityGuideSchema = z.object({ summary: z.string(), themes: z.array( z.object({ theme: z.string(), severity: intensity, description: z.string(), approximateTiming: z.string().optional(), }), ), }); export const internationalRatingsSchema = z.object({ ratings: z.array( z.object({ country: z.string(), countryCode: z.string(), rating: z.string(), descriptors: z.array(z.string()).optional(), }), ), discrepancyNote: z.string(), strictestCountry: z.string().optional(), mostLenientCountry: z.string().optional(), }); export const productionFactsSchema = z.object({ facts: z.array( z.object({ category: z.string(), fact: z.string(), }), ), budget: z.string().optional(), boxOffice: z.string().optional(), filmingLocations: z.array(z.string()).optional(), }); export const historicalAccuracySchema = z.object({ accuracyScore: z.number().min(0).max(100), summary: z.string(), accurateElements: z.array(z.string()), inventions: z.array( z.object({ claim: z.string(), reality: z.string(), }), ), confidence, }); export type RatingExplained = z.infer; export type SkipGuide = z.infer; export type SensitivityGuide = z.infer; export type InternationalRatings = z.infer; export type ProductionFacts = z.infer; export type HistoricalAccuracy = z.infer;