import { z } from 'zod';
export const createIngredientSchema = z.object({
name: z.string().trim().min(1).max(200),
baseUnitCode: z.string().trim().min(1).max(32),
sku: z.string().trim().min(1).max(100).optional(),
}).strict();
export const setIngredientAllergensSchema = z.object({
ingredientId: z.string().uuid(),
allergens: z.array(z.object({
code: z.string().trim().min(1).max(64),
relation: z.enum(['contains', 'may_contain']),
}).strict()).max(64),
}).strict();
export const createProductSchema = z.object({
name: z.string().trim().min(1).max(200),
categoryId: z.string().uuid().optional(),
recipeId: z.string().uuid().optional(),
sku: z.string().trim().min(1).max(100).optional(),
productType: z.enum(['dish','drink','retail','service','other']).optional(),
}).strict();
export const setPriceSchema = z.object({
productId: z.string().uuid(),
currencyCode: z.string().regex(/^[A-Z]{3}$/),
amountMinor: z.number().int().nonnegative().safe(),
channel: z.string().trim().min(1).max(64).optional(),
}).strict();
export const setAvailabilitySchema = z.object({
productId: z.string().uuid(),
available: z.boolean(),
reasonCode: z.string().trim().min(1).max(100).optional(),
}).strict();
export const createAvailabilityRuleSchema = z.object({
productId: z.string().uuid(),
placeId: z.string().uuid().optional(),
operationalUnitId: z.string().uuid().optional(),
stationId: z.string().uuid().optional(),
channel: z.string().trim().min(1).max(64).optional(),
startsAt: z.string().datetime().optional(),
endsAt: z.string().datetime().optional(),
available: z.boolean(),
reasonCode: z.string().trim().min(1).max(100).optional(),
priority: z.number().int().min(0).max(1000).default(0),
}).strict();
export const createModifierGroupSchema = z.object({
name: z.string().trim().min(1).max(200),
minSelect: z.number().int().nonnegative().default(0),
maxSelect: z.number().int().nonnegative().nullable().optional(),
}).strict();
export const createModifierSchema = z.object({
name: z.string().trim().min(1).max(200),
recipeId: z.string().uuid().optional(),
}).strict();
export const attachModifierSchema = z.object({
modifierGroupId: z.string().uuid(),
modifierId: z.string().uuid(),
priceDeltaMinor: z.number().int().default(0),
sortOrder: z.number().int().default(0),
}).strict();
export const attachModifierGroupToProductSchema = z.object({
productId: z.string().uuid(),
modifierGroupId: z.string().uuid(),
sortOrder: z.number().int().default(0),
}).strict();
