import { z } from 'zod'; import { baseListQuerySchema } from '@/lib/api/list-query'; export const RESERVATION_STATUSES = ['pending', 'active', 'ended', 'cancelled'] as const; export const TENURE_TYPES = ['permanent', 'fixed_term', 'seasonal'] as const; export const createPendingSchema = z.object({ berthId: z.string().min(1), clientId: z.string().min(1), yachtId: z.string().min(1), interestId: z.string().optional(), startDate: z.coerce.date(), tenureType: z.enum(TENURE_TYPES).optional().default('permanent'), notes: z.string().optional(), }); export const activateSchema = z.object({ contractFileId: z.string().optional(), effectiveDate: z.coerce.date().optional(), }); export const endReservationSchema = z.object({ endDate: z.coerce.date(), notes: z.string().optional(), }); export const cancelSchema = z.object({ reason: z.string().optional(), }); export const listReservationsSchema = baseListQuerySchema.extend({ status: z.enum(RESERVATION_STATUSES).optional(), berthId: z.string().optional(), clientId: z.string().optional(), yachtId: z.string().optional(), }); export type CreatePendingInput = z.infer; export type ActivateInput = z.infer; export type EndReservationInput = z.infer; export type CancelInput = z.infer; export type ListReservationsInput = z.infer;