import { z } from "zod/v4"; import { FieldTypeSchema, TemplateSectionSchema } from "./asset-definition"; export const AssetStatusSchema = z.enum(["available", "in_use", "maintenance", "retired"]); export const AssetCharacteristicSchema = z.strictObject({ fieldId: z.uuid(), name: z.string().min(1).max(100), type: FieldTypeSchema, unit: z.string().max(30), choices: z.array(z.string().min(1).max(100)), required: z.boolean(), sectionId: z.uuid().optional(), }); export const AssetValueSchema = z.union([z.string().max(10000), z.number().finite(), z.boolean()]); export const AssetInputSchema = z.strictObject({ name: z.string().min(1).max(100), templateId: z.uuid(), siteId: z.uuid().nullable(), brandId: z.uuid().nullable().optional(), status: AssetStatusSchema, notes: z.string().max(10000), characteristics: z.record(z.uuid(), AssetValueSchema), }); export const AssetSpecificationSchema = z.strictObject({ templateId: z.uuid(), templateName: z.string().min(1).max(100), sections: z.array(TemplateSectionSchema).max(30).optional(), fields: z.array(AssetCharacteristicSchema).min(1).max(100), }); export type AssetInput = z.infer; export type AssetSpecificationData = z.infer; export type AssetCharacteristic = z.infer;