import { z } from "zod"; import { cableCrossSectionOptions, cableTypeOptions, consumerGroupOptions, deviceTypeOptions, phaseTypeOptions, protectionCharacteristicOptions, protectionTypeOptions, tradeOrCostGroupOptions, } from "../constants/consumer-option-lists.js"; export const createConsumerSchema = z.object({ projectId: z.string().min(1), distributionBoardId: z.string().min(1).optional(), circuitListId: z.string().min(1).optional(), projectDeviceId: z.string().min(1).optional(), isLinkedToDevice: z.boolean().optional(), roomId: z.string().min(1).optional(), circuitNumber: z.string().optional(), description: z.string().optional(), name: z.string().optional(), category: z.string().optional(), deviceType: z.enum(deviceTypeOptions).optional(), phaseType: z.enum(phaseTypeOptions).optional(), tradeOrCostGroup: z.enum(tradeOrCostGroupOptions).optional(), group: z.enum(consumerGroupOptions).optional(), protectionType: z.enum(protectionTypeOptions).optional(), protectionRatedCurrent: z.number().min(0).optional(), protectionCharacteristic: z.enum(protectionCharacteristicOptions).optional(), cableType: z.enum(cableTypeOptions).optional(), cableCrossSection: z.enum(cableCrossSectionOptions).optional(), comment: z.string().optional(), quantity: z.number().min(0).optional(), installedPowerPerUnitKw: z.number().min(0).optional(), demandFactor: z.number().min(0).max(1).optional(), voltageV: z.number().positive().optional(), phaseCount: z.union([z.literal(1), z.literal(3)]).optional(), powerFactor: z.number().min(0).max(1).optional(), note: z.string().optional(), }); export const updateConsumerSchema = createConsumerSchema; export const createProjectSchema = z.object({ name: z.string().min(1), singlePhaseVoltageV: z.number().positive().optional(), threePhaseVoltageV: z.number().positive().optional(), }); export const updateProjectSettingsSchema = z.object({ singlePhaseVoltageV: z.number().positive(), threePhaseVoltageV: z.number().positive(), }); export const createDistributionBoardSchema = z.object({ name: z.string().min(1), }); export const createFloorSchema = z.object({ name: z.string().min(1), }); export const createRoomSchema = z.object({ floorId: z.string().min(1).optional(), roomNumber: z.string().min(1), roomName: z.string().min(1), }); export type CreateConsumerInput = z.infer; export type CreateProjectInput = z.infer; export type UpdateProjectSettingsInput = z.infer; export type CreateDistributionBoardInput = z.infer; export type UpdateConsumerInput = z.infer; export type CreateFloorInput = z.infer; export type CreateRoomInput = z.infer;