import { useStore } from './store';

export type UserRole = 'user' | 'admin' | 'super_admin';

interface User {
  id: string;
  email: string;
  name: string;
  role: UserRole;
  avatar_url?: string;
}

// Check if user has admin access
export function isAdmin(user: User | null): boolean {
  if (!user) return false;
  return user.role === 'admin' || user.role === 'super_admin';
}

// Check if user has super admin access
export function isSuperAdmin(user: User | null): boolean {
  if (!user) return false;
  return user.role === 'super_admin';
}

// Check if user can access a specific feature
export function canAccess(user: User | null, feature: string): boolean {
  if (!user) return false;

  const adminOnlyFeatures = [
    'admin_panel',
    'usage_reporting',
    'user_management',
    'api_keys_management',
    'system_settings',
    'audit_logs',
  ];

  if (adminOnlyFeatures.includes(feature)) {
    return isAdmin(user);
  }

  return true;
}

// Hook for checking admin status
export function useIsAdmin(): boolean {
  const { user } = useStore();
  return isAdmin(user as User | null);
}

// Hook for checking super admin status
export function useIsSuperAdmin(): boolean {
  const { user } = useStore();
  return isSuperAdmin(user as User | null);
}

// Admin access check function - use AdminGuard component instead of HOC
export function requireAdmin(user: User | null): boolean {
  return isAdmin(user);
}
