import { z } from 'zod'; import { baseListQuerySchema } from '@/lib/api/route-helpers'; import { EXPENSE_CATEGORIES, PAYMENT_METHODS } from '@/lib/constants'; export const createExpenseSchema = z.object({ establishmentName: z.string().max(200).optional(), amount: z.coerce.number().positive(), currency: z.string().length(3).default('USD'), paymentMethod: z.enum(PAYMENT_METHODS).optional(), category: z.enum(EXPENSE_CATEGORIES).optional(), payer: z.string().max(200).optional(), expenseDate: z.coerce.date(), description: z.string().max(2000).optional(), receiptFileIds: z.array(z.string()).optional(), paymentStatus: z.enum(['unpaid', 'paid', 'partial']).default('unpaid'), paymentDate: z.string().optional(), paymentReference: z.string().optional(), paymentNotes: z.string().optional(), }); export const updateExpenseSchema = createExpenseSchema.partial(); export const listExpensesSchema = baseListQuerySchema.extend({ category: z.string().optional(), paymentStatus: z.string().optional(), dateFrom: z.string().optional(), dateTo: z.string().optional(), currency: z.string().optional(), payer: z.string().optional(), }); export type CreateExpenseInput = z.infer; export type UpdateExpenseInput = z.infer; export type ListExpensesInput = z.infer;