import { combineReducers, configureStore } from "@reduxjs/toolkit";
import { setupListeners } from "@reduxjs/toolkit/query";
import LocationReducer from "@/store/location.slice";
import AuthReducer from "@/store/auth.slice";
import CartReducer from "@/store/cart.slice";
import AddressReducer from "@/store/address.slice";
import ForgetReducer from "@/store/forget.slice";
import NotificationReducer from "@/store/notification.slice";
import SettingsReducer from "@/store/settings.slice";
import CategoriesReducer from "@/store/categories.slice";
const rootReducer = combineReducers({
  locationConfig: LocationReducer,
  AuthConfig: AuthReducer,
  CartConfig: CartReducer,
  AddressConfig: AddressReducer,
  ForgetConfig: ForgetReducer,
  NotificationConfig: NotificationReducer,
  SettingsConfig: SettingsReducer,
  CategoriesConfig: CategoriesReducer,
});

export const store = configureStore({
  reducer: rootReducer,
  middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(),
  devTools: true,
});

// Setting up listeners for refetch behaviors
setupListeners(store.dispatch);

export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;
