import { z } from 'zod'; const isoDate = /^\d{4}-\d{2}-\d{2}$/; const currencyCode = /^[A-Za-z]{3}$/; const saleItemSchema = z.object({ inventoryItemId: z.uuid(), soldPriceMinor: z.int().positive(), costBasisMinor: z.int().nonnegative(), }); export const createSaleSchema = z.object({ inventoryItemId: z.uuid(), costBasisMinor: z.int().nonnegative(), saleDate: z.string().trim().regex(isoDate), saleLocation: z.string().trim().max(255).optional(), soldPriceMinor: z.int().positive(), currency: z.string().trim().regex(currencyCode).optional(), platformFeesMinor: z.int().nonnegative().optional(), paymentProcessingFeesMinor: z.int().nonnegative().optional(), shippingCostMinor: z.int().nonnegative().optional(), taxesMinor: z.int().nonnegative().optional(), otherFeesMinor: z.int().nonnegative().optional(), buyerName: z.string().trim().max(255).optional(), buyerContact: z.string().trim().max(255).optional(), notes: z.string().trim().max(10000).optional(), }).strict(); export const createMultiItemSaleSchema = z.object({ items: z.array(saleItemSchema).min(2), saleDate: z.string().trim().regex(isoDate), saleLocation: z.string().trim().max(255).optional(), currency: z.string().trim().regex(currencyCode).optional(), platformFeesMinor: z.int().nonnegative().optional(), paymentProcessingFeesMinor: z.int().nonnegative().optional(), shippingCostMinor: z.int().nonnegative().optional(), taxesMinor: z.int().nonnegative().optional(), otherFeesMinor: z.int().nonnegative().optional(), buyerName: z.string().trim().max(255).optional(), buyerContact: z.string().trim().max(255).optional(), notes: z.string().trim().max(10000).optional(), }).strict(); export const voidSaleSchema = z.object({ reason: z.string().trim().min(3).max(1000), }).strict();