/**
 * Authentication Type Definitions
 * Defines types for auth-related operations and state management
 */

export interface LoginCredentials {
  email: string;
  password: string;
}

export interface AuthResponse {
  success: boolean;
  user: AuthUser | null;
  error: string | null;
}

export interface AuthUser {
  uid: string;
  email: string | null;
  displayName: string | null;
  photoURL: string | null;
  role?: string;
}

export interface AuthState {
  user: AuthUser | null;
  isAuthenticated: boolean;
  status: "idle" | "loading" | "succeeded" | "failed";
  error: string | null;
}

export interface PasswordResetResponse {
  success: boolean;
  error?: string;
}

export interface LogoutResponse {
  success: boolean;
  error?: string;
}
