import { QueryClient } from '@tanstack/react-query';

export const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 1000 * 60 * 5, // 5 minutos
      refetchOnWindowFocus: false,
      retry: (failureCount, error) => {
        // No reintentar si es un error de 404 o 401
        if (error instanceof Error) {
          const status = (error as any).status;
          if (status === 404 || status === 401) {
            return false;
          }
        }
        // Reintentar hasta 3 veces para otros errores
        return failureCount < 3;
      },
      retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000), // Exponential backoff
    },
    mutations: {
      retry: (failureCount, error) => {
        // No reintentar si es un error de 404 o 401
        if (error instanceof Error) {
          const status = (error as any).status;
          if (status === 404 || status === 401) {
            return false;
          }
        }
        // Reintentar hasta 2 veces para otros errores
        return failureCount < 2;
      },
      retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000), // Exponential backoff
    },
  },
});
