import { z } from 'zod';

export const userProfileSchema = z.object({
  id: z.string(),
  fullName: z.string(),
  email: z.email().nullable(),
  role: z.string(),
  avatarUrl: z.url().nullable(),
  createdAt: z.string(),
});

export type UserProfile = z.infer<typeof userProfileSchema>;
export type UserProfileResponse = UserProfile;

export const passwordResetStartSchema = z.object({
  email: z.string().email('Ingresá un email válido.'),
});

export type PasswordResetStartInput = z.infer<typeof passwordResetStartSchema>;

export const passwordResetVerifySchema = z.object({
  requestId: z.string().uuid('Request ID inválido.'),
  otp: z.string().length(6, 'El código debe tener 6 dígitos.'),
  newPassword: z.string().min(6, 'La contraseña debe tener al menos 6 caracteres.'),
});

export type PasswordResetVerifyInput = z.infer<typeof passwordResetVerifySchema>;

export const passwordResetResendSchema = z.object({
  requestId: z.string().uuid('Request ID inválido.'),
});

export type PasswordResetResendInput = z.infer<typeof passwordResetResendSchema>;

export type PasswordResetStartResponse = {
  message: string;
  requestId: string;
  email: string;
  expiresAt: string;
  cooldownSeconds: number;
};

export type PasswordResetVerifyResponse = {
  message: string;
};

export type PasswordResetResendResponse = {
  message: string;
  requestId: string;
  email: string;
  expiresAt: string;
  cooldownSeconds: number;
};
