import { z } from "zod"; import { expectedProjectRevisionSchema } from "../../shared/validation/project-command.schemas.js"; export const createEstimateBalanceRequestSchema = z .object({ expectedRevision: expectedProjectRevisionSchema, name: z.string().trim().min(1).max(200), workStage: z.string().trim().max(50).nullable().optional(), dateIso: z .string() .regex(/^\d{4}-\d{2}-\d{2}$/) .nullable() .optional(), template: z.enum(["kg400", "empty", "copy"]), copyFromBalanceId: z.string().trim().min(1).optional(), }) .strict() .refine((input) => input.template !== "copy" || Boolean(input.copyFromBalanceId), { message: "copyFromBalanceId is required for template copy", path: ["copyFromBalanceId"], }); export const updateEstimateBalanceRequestSchema = z .object({ expectedRevision: expectedProjectRevisionSchema, // Validated in detail by parseEstimateBalanceSnapshot. balance: z.unknown(), }) .strict(); export const deleteEstimateBalanceRequestSchema = z .object({ expectedRevision: expectedProjectRevisionSchema }) .strict();