import { z } from 'zod'; export const createIncomeSchema = z.object({ gross_salary: z.number().positive('Salário bruto deve ser positivo'), /** * Salário líquido efetivo (após override do usuário). * Deve ser enviado pelo app após o cálculo de INSS/IRRF. */ calculated_net_salary: z.number().nonnegative(), effective_net_salary: z.number().nonnegative(), reference_month: z.number().int().min(1).max(12), reference_year: z.number().int().min(2020).max(2100), description: z.string().max(255).nullable().optional(), }); export const updateIncomeSchema = z.object({ gross_salary: z.number().positive().optional(), calculated_net_salary: z.number().nonnegative().optional(), effective_net_salary: z.number().nonnegative().optional(), description: z.string().max(255).nullable().optional(), }); export const incomeParamsSchema = z.object({ userId: z.coerce.number().int().positive(), id: z.coerce.number().int().positive(), }); export const incomeUserParamsSchema = z.object({ userId: z.coerce.number().int().positive(), }); export const incomeQuerySchema = z.object({ month: z.coerce.number().int().min(1).max(12).optional(), year: z.coerce.number().int().min(2020).optional(), }); export type CreateIncomeInput = z.infer; export type UpdateIncomeInput = z.infer;