// ============================================================================
// Auth request / response types
// Generated from:
//   honeyDueAPI-go/internal/dto/requests/auth.go
//   honeyDueAPI-go/internal/dto/responses/auth.go
// ============================================================================

// ---------------------------------------------------------------------------
// Requests
// ---------------------------------------------------------------------------

export interface LoginRequest {
  username?: string;
  email?: string;
  password: string;
}

export interface RegisterRequest {
  username: string;
  email: string;
  password: string;
  first_name?: string;
  last_name?: string;
}

export interface VerifyEmailRequest {
  code: string;
}

export interface ForgotPasswordRequest {
  email: string;
}

export interface VerifyResetCodeRequest {
  email: string;
  code: string;
}

export interface ResetPasswordRequest {
  reset_token: string;
  new_password: string;
}

export interface UpdateProfileRequest {
  email?: string | null;
  first_name?: string | null;
  last_name?: string | null;
}

export interface ResendVerificationRequest {
  // No body needed - uses authenticated user's email
}

export interface AppleSignInRequest {
  id_token: string;
  user_id: string;
  email?: string | null;
  first_name?: string | null;
  last_name?: string | null;
}

export interface GoogleSignInRequest {
  id_token: string;
}

// ---------------------------------------------------------------------------
// Responses
// ---------------------------------------------------------------------------

export interface UserResponse {
  id: number;
  username: string;
  email: string;
  first_name: string;
  last_name: string;
  is_active: boolean;
  verified: boolean;
  date_joined: string;
  last_login?: string | null;
}

export interface UserProfileResponse {
  id: number;
  user_id: number;
  verified: boolean;
  bio: string;
  phone_number: string;
  date_of_birth?: string | null;
  profile_picture: string;
}

export interface LoginResponse {
  token: string;
  user: UserResponse;
}

export interface RegisterResponse {
  token: string;
  user: UserResponse;
  message: string;
}

export interface CurrentUserResponse {
  id: number;
  username: string;
  email: string;
  first_name: string;
  last_name: string;
  is_active: boolean;
  date_joined: string;
  last_login?: string | null;
  profile?: UserProfileResponse | null;
}

export interface VerifyEmailResponse {
  message: string;
  verified: boolean;
}

export interface ForgotPasswordResponse {
  message: string;
}

export interface VerifyResetCodeResponse {
  message: string;
  reset_token: string;
}

export interface ResetPasswordResponse {
  message: string;
}

export interface AppleSignInResponse {
  token: string;
  user: UserResponse;
  is_new_user: boolean;
}

export interface GoogleSignInResponse {
  token: string;
  user: UserResponse;
  is_new_user: boolean;
}

// ---------------------------------------------------------------------------
// User summary types (from responses/user.go)
// ---------------------------------------------------------------------------

export interface UserSummary {
  id: number;
  username: string;
  email: string;
  first_name: string;
  last_name: string;
}

export interface UserProfileSummary {
  id: number;
  user_id: number;
  bio?: string;
  profile_picture?: string;
  phone_number?: string;
}
