import { configureStore } from '@reduxjs/toolkit';
import styleReducer from './styleSlice';
import mainReducer from './mainSlice';
import authSlice from './authSlice';
import openAiSlice from './openAiSlice';

import usersSlice from './users/usersSlice';
import cameras_ptzSlice from './cameras_ptz/cameras_ptzSlice';
import epcsSlice from './epcs/epcsSlice';
import episSlice from './epis/episSlice';
import equipes_trabalhoSlice from './equipes_trabalho/equipes_trabalhoSlice';
import estrutura_projetoSlice from './estrutura_projeto/estrutura_projetoSlice';
import etapas_ou_trechosSlice from './etapas_ou_trechos/etapas_ou_trechosSlice';
import frames_imagemSlice from './frames_imagem/frames_imagemSlice';
import gemeos_digitaisSlice from './gemeos_digitais/gemeos_digitaisSlice';
import historico_alteracoes_projetoSlice from './historico_alteracoes_projeto/historico_alteracoes_projetoSlice';
import inspecao_aereaSlice from './inspecao_aerea/inspecao_aereaSlice';
import maquinas_atividadeSlice from './maquinas_atividade/maquinas_atividadeSlice';
import materiais_atividadeSlice from './materiais_atividade/materiais_atividadeSlice';
import membros_equipeSlice from './membros_equipe/membros_equipeSlice';
import memoriais_descritivos_asbuiltSlice from './memoriais_descritivos_asbuilt/memoriais_descritivos_asbuiltSlice';
import modelos_bim_asbuiltSlice from './modelos_bim_asbuilt/modelos_bim_asbuiltSlice';
import obrasSlice from './obras/obrasSlice';
import permissoes_moduloSlice from './permissoes_modulo/permissoes_moduloSlice';
import pessoas_atividadeSlice from './pessoas_atividade/pessoas_atividadeSlice';
import pessoas_frameSlice from './pessoas_frame/pessoas_frameSlice';
import plantas_asbuilt_2dSlice from './plantas_asbuilt_2d/plantas_asbuilt_2dSlice';
import relatorio_andamento_atualSlice from './relatorio_andamento_atual/relatorio_andamento_atualSlice';
import relatorios_analiticos_videoSlice from './relatorios_analiticos_video/relatorios_analiticos_videoSlice';
import relatorios_diariosSlice from './relatorios_diarios/relatorios_diariosSlice';
import relatorios_mensaisSlice from './relatorios_mensais/relatorios_mensaisSlice';
import relatorios_semanaisSlice from './relatorios_semanais/relatorios_semanaisSlice';
import subcontratadasSlice from './subcontratadas/subcontratadasSlice';
import usuariosSlice from './usuarios/usuariosSlice';
import rolesSlice from './roles/rolesSlice';
import permissionsSlice from './permissions/permissionsSlice';
import clientesSlice from './clientes/clientesSlice';

export const store = configureStore({
  reducer: {
    style: styleReducer,
    main: mainReducer,
    auth: authSlice,
    openAi: openAiSlice,

    users: usersSlice,
    cameras_ptz: cameras_ptzSlice,
    epcs: epcsSlice,
    epis: episSlice,
    equipes_trabalho: equipes_trabalhoSlice,
    estrutura_projeto: estrutura_projetoSlice,
    etapas_ou_trechos: etapas_ou_trechosSlice,
    frames_imagem: frames_imagemSlice,
    gemeos_digitais: gemeos_digitaisSlice,
    historico_alteracoes_projeto: historico_alteracoes_projetoSlice,
    inspecao_aerea: inspecao_aereaSlice,
    maquinas_atividade: maquinas_atividadeSlice,
    materiais_atividade: materiais_atividadeSlice,
    membros_equipe: membros_equipeSlice,
    memoriais_descritivos_asbuilt: memoriais_descritivos_asbuiltSlice,
    modelos_bim_asbuilt: modelos_bim_asbuiltSlice,
    obras: obrasSlice,
    permissoes_modulo: permissoes_moduloSlice,
    pessoas_atividade: pessoas_atividadeSlice,
    pessoas_frame: pessoas_frameSlice,
    plantas_asbuilt_2d: plantas_asbuilt_2dSlice,
    relatorio_andamento_atual: relatorio_andamento_atualSlice,
    relatorios_analiticos_video: relatorios_analiticos_videoSlice,
    relatorios_diarios: relatorios_diariosSlice,
    relatorios_mensais: relatorios_mensaisSlice,
    relatorios_semanais: relatorios_semanaisSlice,
    subcontratadas: subcontratadasSlice,
    usuarios: usuariosSlice,
    roles: rolesSlice,
    permissions: permissionsSlice,
    clientes: clientesSlice,
  },
});

// Infer the `RootState` and `AppDispatch` types from the store itself
export type RootState = ReturnType<typeof store.getState>;
// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}
export type AppDispatch = typeof store.dispatch;
